spring boot 部署為jar包的方法示例
前言
一直在ide中敲代碼,使用命令行 mvn spring-boot:run 或者 gradlew bootRun 來(lái)運(yùn)行spring boot項(xiàng)目。想來(lái)放到prod上面也應(yīng)該很簡(jiǎn)單。然而今天試了下,各種問(wèn)題。最大錯(cuò)誤是1.4的bug:
Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: Unable to resolve persistence unit root URL
這個(gè)錯(cuò)誤使我一直以為自己的代碼有問(wèn)題。找了半天沒(méi)找到,最后想既然命令行可以運(yùn)行ok,那么一個(gè)fat jar失敗肯定不對(duì)了。于是上github去問(wèn),以為石沉大海準(zhǔn)備睡覺(jué)的。想不到的是spring boot的成員秒回,找到問(wèn)題是1.4版本中hibernate自動(dòng)配置的問(wèn)題,想我根本不需要hibernate,刪除就可以了。
github 原問(wèn)題:https://github.com/spring-projects/spring-boot/issues/6927
部署為可運(yùn)行的jar
spring boot已經(jīng)盡可能把需要配置的東西自動(dòng)化了,我還傻傻的像以前springmvc那樣補(bǔ)充各種配置,比如加一個(gè)數(shù)據(jù)源druid。然而大可不必,使用默認(rèn)的就好,等需求不滿足的時(shí)候,在進(jìn)行修改就可以了。
同樣的,既然內(nèi)置的tomat可以很好的運(yùn)行,為啥非要自己手動(dòng)部署war包?
在gradle build或者maven package之后,會(huì)得到一個(gè)jar,這個(gè)jar是spring boot修改過(guò)的jar,可以直接運(yùn)行。
運(yùn)行方式:
java -jar xxxx.jar
看到比較好的linux腳本:
start.sh
#!/bin/sh rm -f tpid nohup java -jar xx.jar --spring.profiles.active=dev > /dev/null 2>&1 & echo $! > tpid echo Start Success!
stop.sh
#!/bin/sh
APP_NAME=myapp
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 5
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
check.sh
#!/bin/sh
APP_NAME=myapp
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'App is running.'
else
echo 'App is NOT running.'
fi
kill.sh
#!/bin/sh
APP_NAME=myapp
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
fi
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java通過(guò)JNI 調(diào)用動(dòng)態(tài)鏈接庫(kù)DLL操作
這篇文章主要介紹了Java通過(guò)JNI 調(diào)用動(dòng)態(tài)鏈接庫(kù)DLL操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
解決IDEA項(xiàng)目external libraries依賴包消失的問(wèn)題
有時(shí)候電腦重啟后,再打開(kāi)IDEA上的項(xiàng)目時(shí)會(huì)出現(xiàn)external libraries目錄下的依賴包都消失了的情況,只剩下了一個(gè)JDK的包,本文給大家介紹了解決IDEA項(xiàng)目external libraries依賴包消失的辦法,需要的朋友可以參考下2024-02-02
Java Web stmp發(fā)送帶附件郵件(附SSL版)
這篇文章主要為大家詳細(xì)介紹了Java Web stmp發(fā)送帶附件郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
使用Java將一個(gè)List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例
這篇文章主要介紹了使用Java將一個(gè)List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例,本文通過(guò)詳細(xì)的案例來(lái)解釋說(shuō)明了如何去操作,需要的朋友可以參考下2021-06-06
MyBatisPlus自定義SQL的實(shí)現(xiàn)
MyBatisPlus提供了自定義SQL功能,允許開(kāi)發(fā)者在Mapper接口中定義方法,并通過(guò)XML文件或注解編寫SQL語(yǔ)句,本文詳解了如何在MP中使用自定義SQL,感興趣的可以了解一下2024-09-09

