maven如何打包動(dòng)態(tài)環(huán)境變量(包括啟動(dòng)腳本)
maven 打包 動(dòng)態(tài)啟動(dòng)腳本
介紹如何通過maven的環(huán)境變量動(dòng)態(tài)打包, 并動(dòng)態(tài)改變啟動(dòng)腳本中的環(huán)境參數(shù)
之前都是每個(gè)環(huán)境一個(gè)啟動(dòng)腳本, 其實(shí)啟動(dòng)腳本基本都一樣, 只是啟動(dòng)的時(shí)候的環(huán)境變量不一樣, 隨著環(huán)境越來越多, 這樣一個(gè)環(huán)境一個(gè)啟動(dòng)腳本的方式太不優(yōu)雅了, 每次加環(huán)境都得加一份啟動(dòng)腳本, jenkins配置, alibaba cloud開發(fā)插件配置每次都得微調(diào)一下, 于是尋找是否有可以動(dòng)態(tài)改變腳本內(nèi)容的方式
前提
maven 打包, 配合 assembly 腳本
maven環(huán)境變量(知道這個(gè)是怎么回事的直接跳過這部分即可)
設(shè)置
在 pom.xml 文件中加入如下的配置
<profiles> ? ? <profile> ? ? ? ? <!-- 開發(fā)環(huán)境 --> ? ? ? ? <id>dev</id> ? ? ? ? <properties> ? ? ? ? ? ? <package.environment>dev</package.environment> ? ? ? ? </properties> ? ? </profile> <profiles>
package.environment: 這個(gè)是變量名(你可以直接叫env等等, 隨意)dev: 中間這個(gè) dev 就是環(huán)境變量的值(和你的環(huán)境配置文件, 配置地址等一致即可)
使用
maven 打包命令加上 -P dev 標(biāo)識(shí)打 dev 環(huán)境的包
assembly 配置
在配置腳本中加入如下
<fileSet>
?? ?<directory>${project.build.scriptSourceDirectory}</directory>
?? ?<outputDirectory></outputDirectory>
?? ?<fileMode>0755</fileMode>
?? ?<filtered>true</filtered>
?? ?<includes>
?? ??? ?<include>startup.sh</include>
?? ?</includes>
</fileSet>directory: 文件地址(打包的時(shí)候去哪里復(fù)制這些文件outputDirectory: 輸出到哪里(我這里是默認(rèn)位置)fileMode: 文件權(quán)限設(shè)置filtered: 這個(gè)為true則表示啟用動(dòng)態(tài)變量
啟動(dòng)腳本如何寫
本文環(huán)境變量的key為package.environment
–spring.profiles.active 后面的環(huán)境參數(shù)就能根據(jù)maven打包命令動(dòng)態(tài)變更了(maven 命令 -P 后面跟的參數(shù))
如下:
nohup java -jar your.jar --spring.profiles.active=${package.environment} -server -Xms512m -Xmx1024m -Xss256kmaven常用打包命令
1、mvn compile 編譯,將Java 源程序編譯成 class 字節(jié)碼文件。
2、mvn test 測試,并生成測試報(bào)告
3、mvn clean 將以前編譯得到的舊的 class 字節(jié)碼文件刪除
4、mvn pakage 打包,動(dòng)態(tài) web工程打 war包,Java工程打 jar 包。
5、mvn install 將項(xiàng)目生成 jar 包放在倉庫中,以便別的模塊調(diào)用
6、mvn clean install -Dmaven.test.skip=true 打成jar包,并且拋棄測試用例打包
7、mvn clean pakage -Dmaven.test.skip=true 動(dòng)態(tài) web工程打 war包,Java工程打 jar 包 ,并且拋棄測試用例打包
Maven可以使用mvn package指令對項(xiàng)目進(jìn)行打包,如果使用java -jar xxx.jar執(zhí)行運(yùn)行jar文件,會(huì)出現(xiàn)"no main manifest attribute, in xxx.jar"(沒有設(shè)置Main-Class)、ClassNotFoundException(找不到依賴包)等錯(cuò)誤。
要想jar包能直接通過java -jar xxx.jar運(yùn)行,需要滿足:
1、在jar包中的META-INF/MANIFEST.MF中指定Main-Class,這樣才能確定程序的入口在哪里;
2、要能加載到依賴包。
在pom.xml中配置:
<plugin> ?? ?<!--用于指定加載的主類--> ?? ?<groupId>org.springframework.boot</groupId> ?? ?<artifactId>spring-boot-maven-plugin</artifactId> ?? ?<configuration> ?? ??? ?<mainClass>com.zyd.blog.BlogWebApplication</mainClass> ?? ??? ?<layout>JAR</layout> ? ? ? ? ? ? ? ? <!--構(gòu)建完整可執(zhí)行程序,可以直接運(yùn)行--> ? ? ? ? ? ? ? ? <executable>true</executable> ?? ?</configuration> </plugin>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot項(xiàng)目多層級多環(huán)境yml設(shè)計(jì)詳解
這篇文章主要為大家介紹了SpringBoot項(xiàng)目多層級多環(huán)境yml設(shè)計(jì)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
使用maven對springboot項(xiàng)目進(jìn)行瘦身分離jar的多種處理方案
springboot項(xiàng)目打包一般我們都使用它自帶的spring-boot-maven-plugin插件,這個(gè)插件默認(rèn)情況下,會(huì)把所有的依賴包全部壓縮到一個(gè)jar里面,今天給大家分享幾種方案來如何減小我們的打包文件,需要的朋友可以參考下2024-02-02
mybatis中<if>標(biāo)簽bool值類型為false判斷方法
這篇文章主要給大家介紹了關(guān)于mybatis中<if>標(biāo)簽bool值類型為false判斷方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
mybatis-plus的自動(dòng)填充時(shí)間的問題(添加到數(shù)據(jù)庫的時(shí)間比當(dāng)前時(shí)間多4個(gè)小時(shí))
這篇文章主要介紹了mybatis-plus的自動(dòng)填充時(shí)間的問題(添加到數(shù)據(jù)庫的時(shí)間比當(dāng)前時(shí)間多4個(gè)小時(shí)),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
java基于C/S結(jié)構(gòu)實(shí)現(xiàn)多線程聊天室
這篇文章主要為大家詳細(xì)介紹了java基于C/S結(jié)構(gòu)實(shí)現(xiàn)多線程聊天室,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
解決RestTemplate 請求接收自定義400+ 或500+錯(cuò)誤
這篇文章主要介紹了解決RestTemplate 請求接收自定義400+ 或500+錯(cuò)誤,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08

