本篇和大家分享的是 Spring Boot 打包并結(jié)合 Shell 腳本命令部署缠犀,重點在分享一個shell 程序啟動工具数苫,希望能便利工作;
profiles指定不同環(huán)境的配置
maven-assembly-plugin打發(fā)布壓縮包
分享shenniu_publish.sh程序啟動工具
linux上使用shenniu_publish.sh啟動程序
profiles指定不同環(huán)境的配置
通常一套程序分為了很多個部署環(huán)境:開發(fā)辨液,測試虐急,uat,線上 等滔迈,我們要想對這些環(huán)境區(qū)分配置文件止吁,可以通過兩種方式:
通過application.yml中編碼指定 profile.active=uat 方式指定
通過mvn中profiles來區(qū)分不同環(huán)境對應(yīng)的配置文件夾,人工可以手動在idea勾選生成不同環(huán)境的包(推薦)
這里我們要講的是第二種燎悍,首先在mvn中配置如下內(nèi)容:
節(jié)點粗解:
id:用來指定不同環(huán)境配置文件所在的目錄敬惦,如下我這里:
properties:該節(jié)點中的節(jié)點是可作為參數(shù)傳遞給其他配置文件,如我這里的package-name節(jié)點值就可以在另外的assembly.xml或者shell腳本文件中通過${package-name}獲取到谈山,如下:
activeByDefault:指定默認(rèn)環(huán)境配置文件夾
maven-assembly-plugin打發(fā)布壓縮包
對于springboot程序打包俄删,可以分為jar和war,這里是jar包;有場景是咋們配置文件或者第三方等依賴包不想放到工程jar中畴椰,并且把這些文件壓縮成一個zip包臊诊,方便上傳到linux;此時通過maven-assembly-plugin和maven-jar-plugin就可以做到斜脂,mvn的配置如:
值得注意的地方如下幾點:
mainClass節(jié)點:用來指定啟動main函數(shù)入口類路徑抓艳,如這里的:com.sm.EurekaServerApplication
excludes節(jié)點:排除主jar包中配置等一些列后綴文件,因為我們要包這些配置文件放到主包外面
descriptor節(jié)點:用來指定assembly插件對應(yīng)的assembly.xml配置文件
有了上面mvn配置帚戳,我們還需要assembly.xml的配置玷或,這里提取了結(jié)合shell腳本發(fā)布程序的配置:
重點節(jié)點介紹:
formats節(jié)點:把配置文件和jar包等壓縮成什么文件格式,這里可以有:zip片任,tar等
fileMode節(jié)點:指定scripts目錄下腳本文件(這里是:shenniu_publish.sh)在linux上文件權(quán)限為777
filtered節(jié)點:腳本中參數(shù)變量為pom的profiles中properties的值(該配置偏友,是把mvn中屬性值映射生成到sh文件中,如:${package-name})
完成上面配置后蚂踊,此時我們可以通過idea上勾選切換不同環(huán)境來打zip包约谈,如圖:
分享shenniu_publish.sh程序啟動工具
上面步驟完成了zip格式的發(fā)布包,我們再分享下啟動程序的shell腳本犁钟,該腳本具有的功能如:
解壓zip+啟動jar包
啟動jar包
停止對應(yīng)jar運行
重啟jar程序
目前該shell中封裝了兩種啟動jar命令的方式:
java -cp
java -jar
如圖命令格式:
來看全部的shell代碼:
正如上面小節(jié)說的棱诱,shell中的參數(shù) package-name,activeProfile涝动,boot-main 都是由mvn中profiles的properties中提供迈勋,是可變的參數(shù),腳本代碼本身不需要人工去修改醋粟,只需要變的是mvn的參數(shù)即可靡菇;其實在我們生成zip包的時候,shell中的參數(shù)就被替換了米愿,可以看zip中shell文件內(nèi)容如:
把生成的zip上傳到linux上厦凤,通過命令解壓:
1?unzip?-od?eureka-server-0.0.1-node?eureka-server-0.0.1-node.zip
其實shell腳本中包含有解壓命令,但是我在打包時放在了zip中育苟,所以只能通過手動解壓了较鼓,當(dāng)然可以調(diào)整;此時進入加壓目錄如此:
注:這里第一次執(zhí)行./shenniu_publish.sh腳本時候违柏,提示了錯誤信息博烂;是由于我是在windows上編輯的這個腳本,其空格等和linux上不一樣漱竖,所以運行會有問題禽篱,要解決可以使用vim命令在linux把該文件轉(zhuǎn)成linux格式,如下命令:
執(zhí)行完后馍惹,再來運行腳本./shenniu_publish.sh躺率,此時有如下提示:
此刻我們文件是解壓狀態(tài)玛界,因此只需要start命令啟動程序即可:
到這里shenniu_publish.sh腳本使用就完成了,只要腳本沒有提示錯誤肥照,基本都能啟動jar服務(wù)脚仔;其他restart和stop命令也如此執(zhí)行就行:
可以去研究下shell代碼,希望該腳本能給你帶來效率和好的學(xué)習(xí)思路舆绎,下面是測試用例git地址,腳本在eureka-server項目中:https://github.com/shenniubuxing3/springcloud-Finchley.SR2