spring boot 部署為jar


前言

一直在ide中敲代碼,使用命令行mvn spring-boot:run或者gradlew bootRun來運行spring boot項目。想來放到prod上面也應該很簡單。然而今天試了下,各種問題。最大錯誤是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

這個錯誤使我一直以為自己的代碼有問題。找了半天沒找到,最后想既然命令行可以運行ok,那么一個fat jar失敗肯定不對了。於是上github去問,以為石沉大海准備睡覺的。想不到的是spring boot的成員秒回,找到問題是1.4版本中hibernate自動配置的問題,想我根本不需要hibernate,刪除就可以了。

github 原問題:https://github.com/spring-projects/spring-boot/issues/6927



部署為可運行的jar

spring boot已經盡可能把需要配置的東西自動化了,我還傻傻的像以前springmvc那樣補充各種配置,比如加一個數據源druid。然而大可不必,使用默認的就好,等需求不滿足的時候,在進行修改就可以了。

同樣的,既然內置的tomat可以很好的運行,為啥非要自己手動部署war包?

在gradle build或者maven package之后,會得到一個jar,這個jar是spring boot修改過的jar,可以直接運行。
運行方式:
maven添加plugin

      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>${springboot.version}</version>
      </plugin>

然后執行打包

mvn clean install package spring-boot:repackage
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

博主不得轉載,但還是看了怎么辦:
Spring Boot 部署與服務配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM