spring boot 部署為jar包的方法示例
前言
一直在ide中敲代碼,使用命令行 mvn spring-boot:run 或者 gradlew bootRun 來運(yùn)行spring boot項(xiàng)目。想來放到prod上面也應(yīng)該很簡(jiǎ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ò)誤使我一直以為自己的代碼有問題。找了半天沒找到,最后想既然命令行可以運(yùn)行ok,那么一個(gè)fat jar失敗肯定不對(duì)了。于是上github去問,以為石沉大海準(zhǔn)備睡覺的。想不到的是spring boot的成員秒回,找到問題是1.4版本中hibernate自動(dòng)配置的問題,想我根本不需要hibernate,刪除就可以了。
github 原問題: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修改過的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)文章
Spring aop 如何通過獲取代理對(duì)象實(shí)現(xiàn)事務(wù)切換
這篇文章主要介紹了Spring aop 如何通過獲取代理對(duì)象實(shí)現(xiàn)事務(wù)切換的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java中通過sftp協(xié)議實(shí)現(xiàn)上傳下載的示例代碼
在java開發(fā)中遇到需要將linux系統(tǒng)中指定目錄下的文件下載到windows本地的需求,本文就來介紹Java中通過sftp協(xié)議實(shí)現(xiàn)上傳下載,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06java中樂觀鎖與悲觀鎖區(qū)別及使用場(chǎng)景分析
本文主要介紹了java中樂觀鎖與悲觀鎖區(qū)別及使用場(chǎng)景分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08本地MinIO存儲(chǔ)服務(wù)Java遠(yuǎn)程調(diào)用上傳文件的操作過程
MinIO是一款高性能、分布式的對(duì)象存儲(chǔ)系統(tǒng),它可以100%的運(yùn)行在標(biāo)準(zhǔn)硬件上,即X86等低成本機(jī)器也能夠很好的運(yùn)行MinIO,這篇文章主要介紹了本地MinIO存儲(chǔ)服務(wù)Java遠(yuǎn)程調(diào)用上傳文件的操作過程,需要的朋友可以參考下2023-11-11基于SpringBoot bootstrap.yml配置未生效的解決
這篇文章主要介紹了基于SpringBoot bootstrap.yml配置未生效的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤解決
這篇文章主要給大家介紹了關(guān)于java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯(cuò)誤的解決方法,文中介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面來一起看看吧。2017-03-03