Profile作用
Profile能讓你爲一個特殊的環境自定義一個特殊的構建;profile使得不同環境間構建的可移植性成爲可能。 Maven中的profile是一組可選的配置,可以用來設置或者覆蓋配置默認值。有了profile,你就可以爲不同的環境定製構建。profile可以在pom.xml中配置,並給定一個id。然後你就可以在運行Maven的時候使用的命令行標記告訴Maven運行特定profile中的目標。
一個Profiles下面允許出現的元素:
<project>
<profiles>
<profile>
<build>
<defaultGoal>...</defaultGoal>
<finalName>...</finalName>
<resources>...</resources>
<testResources>...</testResources>
<plugins>...</plugins>
</build>
<reporting>...</reporting>
<modules>...</modules>
<dependencies>...</dependencies>
<dependencyManagement>...</dependencyManagement>
<distributionManagement>...</distributionManagement>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<properties>...</properties>
</profile>
</profiles>
</project>
Profile激活
使用activeByDefault設置激活
<profiles>
<profile>
<id>profileTest1</id>
<properties>
<hello>world</hello>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>profileTest2</id>
<properties>
<hello>andy</hello>
</properties>
</profile>
</profiles>
指定activeByDefault爲true的時候就表示當沒有指定其他profile爲激活狀態時,該profile就默認會被激活。 所以當我們調用mvn package的時候上面的profileTest1將會被激活,但是當我們使用mvn package –P profileTest2的時候將激活profileTest2,而這個時候profileTest1將不會被激活。
使用-P參數顯示的激活一個profile
我們在進行Maven操作時就可以使用-P參數顯示的指定當前激活的是哪一個profile了。比如我們需要在對項目進行打包的時候使用id爲profileTest1的profile,我們就可以這樣做:
mvn package –P profileTest1
當我們使用activeByDefault或settings.xml中定義了處於激活的profile,但是當我們在進行某些操作的時候又不想它處於激活狀態,這個時候我們可以這樣做:
Mvn package –P !profileTest1
這裏假設profileTest1是在settings.xml中使用activeProfile標記的處於激活狀態的profile,那麼當我們使用“-P !profile”的時候就表示在當前操作中該profile將不處於激活狀態。
根據環境來激活profile
profile一個非常重要的特性就是它可以根據不同的環境來激活,比如說根據操作系統的不同激活不同的profile,也可以根據jdk版本的不同激活不同的profile,等等。
<profiles>
<profile>
<id>profileTest1</id>
<jdk>1.5</jdk>
</profile>
<profiles>
查看當前處於激活狀態的profile
我們可以同時定義多個profile,那麼在建立項目的過程中,到底激活的是哪一個profile呢?Maven爲我們提供了一個指令可以查看當前處於激活狀態的profile都有哪些,這個指定就是mvn help:active-profiles。