Maven Filtering和Profile
阿新 • • 發佈:2018-12-14
Filtering
Filtering是resource外掛的功能,作用是將資原始檔中的佔位符替換成對應的值,如下圖所示:
使用注意
- 啟用resource外掛的filtering功能;
- 設定資原始檔的路徑、過濾條件和編碼等等;
- 設定屬性檔案來源(POM定義屬性和環境變數直接使用,外部屬性檔案通過標籤指定);
說明:maven-resources-plugin外掛的copy-resources功能被繫結到validate階段,即Lifecycle執行到validate時,資源被拷貝,佔位符被替換;
Profile
作用:根據不同的條件啟用不同的配置; 定義範圍:Profile幾乎可以定義所有在pom裡的定義的內容如、和外掛配置等等,如下所示:
<profile> <id>dev</id> <properties> <active.profile>dev</active.profile> <pom.jdbc.url>jdbc:mysql://127.0.0.1:3306/dev</pom.jdbc.url> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.4.RELEASE</version> </dependency> <dependencies> </profile>
Profile生效範圍
- 如果定義在settings.xml檔案中,則是全域性的,對所有的maven專案檔案都生效;
- 如果定義在pom.xml檔案中,則僅對當前專案生效;
Profile啟用方式
- -P引數 通過maven 的-P引數啟用指定的profile,引數的值是profile的id,多個profile以逗號分割,如果不想啟用某個預設的profile,就在它的id前加個!,如下程式碼:
mvn -U clean package -Ptest,local,!ignore
- <activation>
<profiles> <profile> <id>ide</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <module>ide</module> </properties> </profile> <profile> <id>api</id> <properties> <module>api</module> </properties> </profile> </profiles>
Filtering + Profile
思路: 在不同的profile裡配置不同的屬性(properties),然後啟用相應的profile,用其中的屬性去替換jdbc.properties裡的佔位符。
<project>
...
<build>
<filters>
<filter>src/main/filters-${active.profile}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>dev</id>
<properties>
<active.profile>dev</active.profile>
</properties>
<!-- 把當前profile設定為預設profile,可以同時這是多個為預設-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<active.profile>test</active.profile>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<active.profile>product</active.profile>
</properties>
</profile>
...
</project>
參考: