maven的pom.xml中profiles的作用詳解
1、profiles是什么?有什么作用
在maven構(gòu)建的項目都存在一個pom.xml的項目對象模型配置文件,用于約束項目(如:jar包管理、構(gòu)建管理等)。profiles是pom.xml中的一個配置項。
我們在開發(fā)項目時一般都會區(qū)分線上環(huán)境和測試環(huán)境,這兩個環(huán)境需要切換以適應(yīng)不同的環(huán)境需求

正式環(huán)境的配置,一般放置于src/main/resources下,而測試環(huán)境放置于/src/test/resources下面。
profile的主要作用就是區(qū)分正式環(huán)境和測試環(huán)境的配置
2、如何配置
<profiles>
<profile>
<id>release</id>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
</profile>
<profile>
<id>test</id>
<build>
<resources>
<resource>
<directory>src/test/resources</directory>
<includes>
<include>config/*.properties</include>
<include>log4j.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
<excludes>
<exclude>log4j.xml</exclude>
</excludes>
</resource>
</resources>
</build>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
如上, 我配置了兩個profile一個release用于正式環(huán)境發(fā)布,test用于測試環(huán)境使用;默認(rèn)開啟測試環(huán)境,activation->true
測試環(huán)境與正式環(huán)境只是部分的配置不同,我們需要公用這部分配置。這就使用到了includes and excludes,用引入和排除配置文件
3、區(qū)別構(gòu)建發(fā)布包
構(gòu)建測試包:
maven package -P test -Dmaven.test.skip=true
構(gòu)建正式包:
maven package -P release -Dmaven.test.skip=true
maven多環(huán)境profiles參數(shù)切換
在實際開發(fā)項目中,常常有幾種環(huán)境,一般情況下最少有三種環(huán)境:開發(fā)、測試、正式,各個環(huán)境之間的參數(shù)也各不相同,
于是在環(huán)境切換時我們需要修改為各環(huán)境需要的參數(shù),就此我們可以通過maven的配置在切換環(huán)境是簡化這一步驟.
項目結(jié)構(gòu)圖

src/main/resources/dev 目錄是開發(fā)環(huán)境的配置項目
src/main/resources/test 目錄是測試環(huán)境的配置項目
在pom.xml定義環(huán)境的profile
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <project.active>dev</project.active> </properties> </profile> <profile> <id>test</id> <properties> <project.active>test</project.active> </properties> </profile> </profiles>
activeByDefault標(biāo)簽的值為true的話表示為默認(rèn)的profile,使用mvn install命令起作用的就是默認(rèn)的 profiles.activation為我們配置激活的profile
<build>
<finalName>SpringMVC_Spring_Mybatis</finalName>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>message.properties</include>
<include>${project.active}/**</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>db.properties</exclude>
<exclude>user.properties</exclude>
<exclude>message.properties</exclude>
<exclude>**/**</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<uriEncoding>UTF-8</uriEncoding>
<path>/</path>
<port>8088</port>
</configuration>
</plugin>
</plugins>
</build>
在工程的${basedir}/src/main/resource,目錄下(basedir指的是pom文件所在的目錄)
<include>與<exclude>是用來圈定和排除某一文件目錄下的文件是否是工程資源的,<include>中指定的為資源文件,其它的都不是,<exclude>中指定的除了這些都為資源文件,如果<include>與<exclude>劃定的范圍存在沖突時,以<exclude>劃定的范圍為準(zhǔn),當(dāng)<include>與<exclude>指定了相同的文件時,它們是不會被排除的,如message.properties同時被<include>與<exclude>指定,但它們還是會被編譯.
輸入maven指令
mvn clean install -P test
編譯結(jié)果如下圖,只編譯test環(huán)境需要的配置-P后面的test為我們所要激活的profile

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實現(xiàn)快速排序算法(Quicktsort)
這篇文章主要介紹了Java實現(xiàn)快速排序算法(Quicktsort),有需要的朋友可以參考一下2013-12-12
IDEA安裝部署Alibaba Cloud Toolkit的實現(xiàn)步驟
Alibaba Cloud Toolkit是阿里云針對IDE平臺為開發(fā)者提供的一款插件,本文主要介紹了IDEA安裝部署Alibaba Cloud Toolkit的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2023-08-08
詳解Java中l(wèi)ist,set,map的遍歷與增強for循環(huán)
這篇文章主要介紹了詳解Java中l(wèi)ist,set,map的遍歷與增強for循環(huán)的相關(guān)資料,需要的朋友可以參考下2017-02-02
SpringBoot實現(xiàn)接口的各種參數(shù)校驗的示例
本文主要介紹了SpringBoot實現(xiàn)接口的各種參數(shù)校驗的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Java編程Socket實現(xiàn)多個客戶端連接同一個服務(wù)端代碼
這篇文章主要介紹了Java編程Socket實現(xiàn)多個客戶端連接同一個服務(wù)端代碼,具有一定參考價值,需要的朋友可以了解下。2017-11-11
從零開始Java實現(xiàn)Parser?Combinator
這篇文章主要為大家介紹了從零開始Java實現(xiàn)Parser?Combinator過程及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05

