maven如何打包動態(tài)環(huán)境變量(包括啟動腳本)
maven 打包 動態(tài)啟動腳本
介紹如何通過maven的環(huán)境變量動態(tài)打包, 并動態(tài)改變啟動腳本中的環(huán)境參數(shù)
之前都是每個環(huán)境一個啟動腳本, 其實啟動腳本基本都一樣, 只是啟動的時候的環(huán)境變量不一樣, 隨著環(huán)境越來越多, 這樣一個環(huán)境一個啟動腳本的方式太不優(yōu)雅了, 每次加環(huán)境都得加一份啟動腳本, jenkins配置, alibaba cloud開發(fā)插件配置每次都得微調一下, 于是尋找是否有可以動態(tài)改變腳本內容的方式
前提
maven 打包, 配合 assembly 腳本
maven環(huán)境變量(知道這個是怎么回事的直接跳過這部分即可)
設置
在 pom.xml 文件中加入如下的配置
<profiles> ? ? <profile> ? ? ? ? <!-- 開發(fā)環(huán)境 --> ? ? ? ? <id>dev</id> ? ? ? ? <properties> ? ? ? ? ? ? <package.environment>dev</package.environment> ? ? ? ? </properties> ? ? </profile> <profiles>
package.environment: 這個是變量名(你可以直接叫env等等, 隨意)dev: 中間這個 dev 就是環(huán)境變量的值(和你的環(huán)境配置文件, 配置地址等一致即可)
使用
maven 打包命令加上 -P dev 標識打 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: 文件地址(打包的時候去哪里復制這些文件outputDirectory: 輸出到哪里(我這里是默認位置)fileMode: 文件權限設置filtered: 這個為true則表示啟用動態(tài)變量
啟動腳本如何寫
本文環(huán)境變量的key為package.environment
–spring.profiles.active 后面的環(huán)境參數(shù)就能根據(jù)maven打包命令動態(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 測試,并生成測試報告
3、mvn clean 將以前編譯得到的舊的 class 字節(jié)碼文件刪除
4、mvn pakage 打包,動態(tài) web工程打 war包,Java工程打 jar 包。
5、mvn install 將項目生成 jar 包放在倉庫中,以便別的模塊調用
6、mvn clean install -Dmaven.test.skip=true 打成jar包,并且拋棄測試用例打包
7、mvn clean pakage -Dmaven.test.skip=true 動態(tài) web工程打 war包,Java工程打 jar 包 ,并且拋棄測試用例打包
Maven可以使用mvn package指令對項目進行打包,如果使用java -jar xxx.jar執(zhí)行運行jar文件,會出現(xiàn)"no main manifest attribute, in xxx.jar"(沒有設置Main-Class)、ClassNotFoundException(找不到依賴包)等錯誤。
要想jar包能直接通過java -jar xxx.jar運行,需要滿足:
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> ? ? ? ? ? ? ? ? <!--構建完整可執(zhí)行程序,可以直接運行--> ? ? ? ? ? ? ? ? <executable>true</executable> ?? ?</configuration> </plugin>
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java中實現(xiàn)線程的三種方式及對比_動力節(jié)點Java學院整理
本文給大家分享了java實現(xiàn)線程的三種方式,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-05-05
實體類使用@Builder,導致@ConfigurationProperties注入屬性失敗問題
這篇文章主要介紹了實體類使用@Builder,導致@ConfigurationProperties注入屬性失敗問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12

