maven-maven使用-P參數(shù)打包不同環(huán)境問題
maven-maven使用-P參數(shù)打包不同環(huán)境
一般的,開發(fā)環(huán)境有dev, test 和 pro,他們的配置多有不同,那么就可以使用 maven -P這個參數(shù)進行多環(huán)境打包
如 clean install -Dmaven.test.skip=true -P pro,就可以切換成生產(chǎn)環(huán)境,和 jenkins 配合簡直不要太爽??!
舉個例子
以 boot 項目來說,現(xiàn)有目錄結(jié)構(gòu):
/src
/main
/java
/resources
/static
/templates
application.yml
application-dev.yml
application-pro.yml
application-test.yml
application.yml:
server:
port: 8080
spring:
profiles:
# @spring.profiles.active@ 變量將會隨著參數(shù)的傳入被替換
active: @spring.profiles.active@
然后三個不同環(huán)境的配置文件分別為:
application-dev.yml:
server:
port: 8080
spring:
application:
name: mpp-dev
application-pro.yml:
server:
port: 8081
spring:
application:
name: mpp-pro
application-test.yml:
server:
port: 8082
spring:
application:
name: mpp-test
配置 maven 的 pom 文件,默認(rèn)激活 dev 環(huán)境:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
</profile>
<profile>
<id>test</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<spring.profiles.active>test</spring.profiles.active>
</properties>
</profile>
<profile>
<id>pro</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
//spring.profiles.active即在application.yml文件中
//定義的參數(shù)@spring.profiles.active@
<spring.profiles.active>pro</spring.profiles.active>
</properties>
</profile>
</profiles>
根據(jù)環(huán)境過濾只有當(dāng)前環(huán)境的配置文件:
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 替換占位符-->
<filtering>true</filtering>
<excludes>
<exclude>application-*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 替換占位符-->
<filtering>true</filtering>
<includes>
<include>application-${spring.profiles.active}.yml</include>
</includes>
</resource>
</resources>
需要加入 plugin 為:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
</plugin>
測試
在當(dāng)前項目 pom 文件所在的目錄下打開命令行,輸入 clean package -Dmaven.test.skip=true -P pro
可以看到:
/target
/classes
/com
application.yml
application-pro.yml
打開 application.yml 文件:
server:
port: 8080
spring:
profiles:
active: pro
可以發(fā)現(xiàn)之前 @spring.profiles.active@ 變量已經(jīng)被替換成了 pro ,而且配置文件只關(guān)于生產(chǎn)環(huán)境,而且dev 和 test 的配置文件都已經(jīng)被過濾了
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于SpringBoot+Elasticsearch實現(xiàn)一套完整的搜索服務(wù)系統(tǒng)
在內(nèi)容平臺場景中,高性能、高相關(guān)性、實時可搜是搜索模塊的核心訴求,本文基于 SpringBoot 與 Elasticsearch(ES),從零實現(xiàn)一套包含索引初始化、數(shù)據(jù)同步、增量更新、關(guān)鍵詞檢索、游標(biāo)分頁的完整搜索服務(wù),需要的朋友可以參考下2026-05-05
Java使用elasticsearch基礎(chǔ)API使用案例講解
這篇文章主要介紹了Java使用elasticsearch基礎(chǔ)API使用案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
Java基礎(chǔ)之?dāng)?shù)組超詳細(xì)知識總結(jié)
這篇文章主要介紹了Java基礎(chǔ)之?dāng)?shù)組詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05

