首先,您不通過-D
選項激活配置文件,而是通過命令行通過-P
選項激活配置文件。或者,您可以通過配置文件部分的activation
元素來激活配置文件,默認情況下它會將其設置爲活動狀態,或者如果配置文件是通過activeProfiles
部分在settings.xml
中定義的。
如果您指定不必要的配置文件,Maven不會拋出錯誤。
所以,如果你想用默認啓動配置文件3,你可以將其設置爲在其profile
節以下內容:
<activation>
<activeByDefault>true</activeByDefault>
</activation>
如果再要SWITH上的個人資料和關閉,使用!
或者在命令行中,例如像在配置文件名前-
符號:
mvn clean install -Pp3!p4
這將激活P3輪廓和停用P4輪廓。
請注意,!
字符是bash中的一個特殊字符,因此您應該將其包裝在單引號內。
但是,請注意,從命令行激活配置文件將會停用您的POM中默認激活的配置文件,但不會啓用默認情況下作爲settings.xml的一部分激活的配置文件(但所有Maven都將共享該配置文件建立在該機器上)。
從Maven的官方文件約profiles
此配置文件會自動被激活所有構建除非在相同POM另一輪廓激活使用先前描述的方法之一。當命令行中激活POM中的配置文件或通過其激活配置時,所有默認激活的配置文件將自動停用。
您可以用下面的POM樣品發揮一下配置文件激活:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>profiles-sample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<profiles>
<profile>
<id>p1</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>p1</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo message="hello from p1" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>p2</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>p2</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo message="hello from p2" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>p3</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>p3</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo message="hello from p3" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
最後,如果你不想情景模式設置爲默認激活,但你要在運行時強制其使用,你可以看看Maven Enforcer Plugin及其Require Active Profile rule。配置後,如果未指定所需的配置文件,則可以使構建失敗(因此,在這種情況下,Maven將通過插件引發錯誤,而不是作爲開箱即用的功能)。
這些配置文件真的有必要嗎?他們有什麼目的? – khmarbaise
回頭看這個問題,你解決了這個問題嗎?答案有幫助嗎? –