我正在尝试设置.pom
文件,如果forkCount
为0则使用一个插件,否则使用不同的插件。此外,我希望0成为默认值。换句话说,我想要
mvn run_tests
和mvn -DforkCount=0 run_tests
都使用插件" A",其中mvn run_tests -DforkCount=5
将使用插件" B"。
我有一个包含以下细分的.pom文件:
<project ...>
...
<properties>
<forkCount>0</forkCount>
</properties>
...
<profiles>
<profile>
<!-- if forkCount==0, don't invoke any of the parallel execution configuration -->
<id>no-parallel-execution</id>
<activation>
<property>
<name>forkCount</name>
<value>0</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<! --- nothing in here references forkCount -->
</plugin>
</plugins>
</build>
</profile>
<profile>
<profile>
<!-- forkCount!=0, use the parallel execution configuration -->
<id>parallel-execution</id>
<activation>
<property>
<name>forkCount</name>
<value>!0</value>
</property>
</activation>
<build>
<plugins>
<plugin>
...
<configuration>
...
<forkCount>${forkCount}</forkCount>
...
</configuration>
</plugin>
</plugins>
</build>
...
forkCount
的唯一引用包含在上面。
如果我在命令行上传递forkCount
的值,那么一切都按预期工作(即插件&#34;当forkCount
为0时使用A&#34;插件&#34 ; B&#34;否则使用)。但是,如果我运行mvn run_tests
,那么插件&#34; B&#34;即使${forkCount}
的值为0,也会被激活。
为了它的价值:
>mvn -DforkCount=0 clean verify help:active-profiles
The following profiles are active:
- no-parallel-execution (source: ....
>mvn clean verify help:active-profiles
The following profiles are active:
- parallel-execution (source: ....
答案 0 :(得分:1)
尝试
mvn -DforkCount=0 help:active-profiles
验证您确实要激活的配置文件是否处于活动状态(并且您确实不想激活的配置文件不是)。
- 更新答案以容纳新信息 -
感谢答案的更新,现在问题似乎很清楚了。
我认为问题是“”不是“0”。根据这种理解,这意味着“!0”将在''或缺少forkCount
值上激活。
我的测试证实了这种解释。
也许您可以使用更多配置文件重做此操作。一个用于检测未设置的属性的条件,一个用于检测属性的条件为零。这两个配置文件都可能留下一个工件,比如$ target目录中的一个被触摸的文件。然后你可以使用这个文件来知道你正在进行单线程调用,而没有文件,这是一个多线程调用。
用于确认这些想法的代码
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>edwinbuck.com</groupId>
<artifactId>example-properties</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<profiles>
<profile>
<id>unspecified-forkCount</id>
<activation>
<property>
<name>!forkCount</name>
</property>
</activation>
</profile>
<profile>
<id>zero-forkCount</id>
<activation>
<property>
<name>forkCount</name>
<value>0</value>
</property>
</activation>
</profile>
<profile>
<id>parallel-execution</id>
<activation>
<property>
<name>forkCount</name>
<value>!0</value>
</property>
</activation>
</profile>
</profiles>
</project>
用于确认这些想法的命令行调用
mvn help:active-profiles
mvn -DforkCount=0 help:active-profiles
mvn -DforkCount=3 help:active-profiles
结果
profiles: unspecified-forkCount parallel-execution
profiles: zero-forkCount
profiles: parallel-execution