我正在使用Maven 3.0.3。我有一个继承父母的项目...
<modelVersion>4.0.0</modelVersion>
<groupId>com.myco.util.ant</groupId>
<artifactId>selenium-framework</artifactId>
<packaging>jar</packaging>
<name>Myco Selenium Utils</name>
<parent>
<groupId>com.nna</groupId>
<artifactId>parent</artifactId>
<version>1.2-SNAPSHOT</version>
<relativePath>../parent</relativePath>
</parent>
在我的父母pom中,我有以下个人资料。但是,如果有人在父pom上进行构建,而不是其中一个子代,我只希望此配置文件处于活动状态。有谁知道如何调整以下内容,以便在有人正在构建子项目时不会激活它?
<profile>
<id>deploy-snapshot</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>deploy</phase>
<configuration>
<target>
<condition property="is-release">
<not>
<contains string="${project.version}" substring="SNAPSHOT" />
</not>
</condition>
<fail if="is-release" message="You can only deploy snapshot versions of this project." />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
谢谢, - 戴夫
答案 0 :(得分:0)
您可以尝试通过文件或目录的存在/不存在来激活它。你可以找到一个example in the Sonatype Maven book。请注意,“当前工作目录”和“${project.basedir}
”之间存在差异,Maven 2和Maven 3之间的差异略有不同,如果这对您很重要。
答案 1 :(得分:0)
我有类似的情况,我想在默认情况下在子项目中运行配置文件,但不是在从顶层构建时,同时也提供从顶层项目运行它的选项。
我使用user.dir
属性来结合Ryan的参考。
:
<profile>
<id>continuous-integration</id>
<!-- Two ways of activating this profile -->
<activation>
<!-- Run the build from the top with param -DfullTest -->
<property>
<name>fullTest</name>
</property>
<!-- Run the build from the integration directory -->
<file>
<missing>${user.dir}/integration</missing>
</file>
</activation>
...
<profile>
如果需要停用,只需更改<missing/>
的{{1}}。