我正在尝试设置一个.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传递一个值(即当forkCount为0时使用插件"A“,而使用插件"B”,则一切都如预期的那样工作)。但是,如果我运行mvn run_tests,那么插件"B“就会被激活,尽管${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: ....发布于 2018-01-12 23:17:04
试一试
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-executionhttps://stackoverflow.com/questions/48234412
复制相似问题