溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SpringBoot應(yīng)用的打包和發(fā)布怎么實現(xiàn)

發(fā)布時間:2023-05-09 16:27:07 來源:億速云 閱讀:92 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“SpringBoot應(yīng)用的打包和發(fā)布怎么實現(xiàn)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1. 創(chuàng)建項目(example-fast)

基于 Spring Boot 創(chuàng)建一個 WEB 項目 example-fast。

2. 編譯打包

2.1 采用 IDEA 集成的 Maven 環(huán)境來對 Spring Boot 項目編譯打包,可謂是超級 easy

SpringBoot應(yīng)用的打包和發(fā)布怎么實現(xiàn)

2.2 mvn 命令打包

# mvn clean 清理編譯
# install 打包
# -Dmaven.test.skip=true 跳過單元測試
# -P dev 指定dev配置

mvn clean install -Dmaven.test.skip=true -P dev

3. 應(yīng)用發(fā)布

3.1 一行命令的演化
運(yùn)行 Spring Boot 打包之后的 jar 方式也簡單,只需一行命令就行。

java -jar /usr/local/example-fast-1.0.0.jar

此時,服務(wù)是啟動了,但是不能關(guān)閉這個窗口,一旦關(guān)閉服務(wù)就停止了,不得不考慮后臺運(yùn)行,并且還想看日志;

java -jar /usr/local/example-fast-1.0.0.jar > example-fast.out &

執(zhí)行啟動時,效果如下,然后就可以輕松看日志輸出了。

如果項目組中你既是研發(fā)又充當(dāng)運(yùn)維的角色,到這基本就完事兒了,因為相信通過熟練操作,會形成肌肉反應(yīng),你肯定能記住這一行命令。
不過,若是分工明確,生產(chǎn)權(quán)限隔離的話,一般都是運(yùn)維同事來操作發(fā)布,所以還得想辦法讓運(yùn)維同事省力,不得不考慮腳本化。

首先創(chuàng)建項目目錄例如 example-fast,然后分別創(chuàng)建 bin、lib、logs 目錄;把 example-fast-0.0.1-SNAPSHOT.jar 拷貝至 lib 目錄下;bin 目錄主要存放腳本。創(chuàng)建 start.sh 應(yīng)用啟動腳本; stop.sh 應(yīng)用停止腳本

啟動腳本(start.sh)

#!/bin/bash

#配置 Java 環(huán)境變量
export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_231
export PATH=.:$JAVA_HOME/bin:$PATH


#定義應(yīng)用名
App_Name=example-fast

#定義應(yīng)用所在目錄
App_Path=/home/${App_Name}

#定義可執(zhí)行文件的路徑
JAR_PATH=${App_Path}/example-fast-1.0.0.jar

#jvm啟動參數(shù)
JAVA_OPTS="-Duser.timezone=GMT+8 -server -Xms4096m -Xmx4096m  -XX:MaxMetaspaceSize=256m -Xloggc:${App_Path}/logs/${App_Name}.gc.log -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=5 -XX:+PrintGC -XX:+PrintGCTimeStamps  -XX:+PrintGCDetails  -XX:+PrintGCApplicationStoppedTime"

#啟動JAVA進(jìn)程函數(shù)
CURRENT_COUNT=`ps -ef|grep java |grep ${App_Name} |grep -vc grep`
if [ $CURRENT_COUNT -eq 0 ]
then
        Log_Name=$(echo ${App_Name}|awk  -F"-" '{ print $NF }')
        nohup java -Dfunc_type=${App_Name}  $JAVA_OPTS  -Dfile.encoding=utf-8  -jar  $JAR_PATH  > ${App_Path}/logs/${App_Name}.out  2>&1 &
  PROCESS_ID=`ps -ef | grep  "${App_Name}" |grep -v grep | awk '{ print $2 }'`
      echo " ?????啟動應(yīng)用 ${App_Name} 成功,進(jìn)程 id 為 ${PROCESS_ID} ????? "
else
    echo " ????? 應(yīng)用 ${App_Name} 已經(jīng)被啟動了 ????? "
fi
# 執(zhí)行應(yīng)用啟動 start.sh
sh start.sh

停止腳本(stop.sh)

#!/bin/bash

# 定義應(yīng)用名稱
App_Name=example-fast

# 停止JAVA進(jìn)程函數(shù)
echo " ????? 開始停止 ${App_Name} 應(yīng)用 ????? "
ps -ef | grep ${App_Name} | grep -v grep | awk '{print$2}' | xargs kill
echo " ????? 應(yīng)用 ${App_Name} 停止成功!????? "
# 執(zhí)行應(yīng)用停止 stop.sh
sh stop.sh

“SpringBoot應(yīng)用的打包和發(fā)布怎么實現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI