gpt4 book ai didi

maven-antrun-plugin 如果满足两个可能条件中的任何一个,则跳过目标

转载 作者:行者123 更新时间:2023-12-01 07:26:23 26 4
gpt4 key购买 nike

我可以通过以下方式将两个属性 A 和 B 传递给 maven

 mvn test -DA=true

 mvn test -DB=true

如果定义了 A 或 B,我希望跳过目标。我发现只有 A 被认为是这样的:

  <plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>skiptThisConditionally</id>
<phase>test</phase>
<configuration>
<target name="anytarget" unless="${A}">
<echo message="This should be skipped if A or B holds" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

现在还得考虑B。这可以做到吗?

马蒂亚斯

最佳答案

我会用外部 build.xml 来做到这一点文件允许您定义多个目标结合 antcall所以使用一个额外的虚拟目标,只是为了检查第二个条件。

pom.xml

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>skiptThisConditionally</id>
<phase>test</phase>
<configuration>
<target name="anytarget">
<ant antfile="build.xml"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

和 build.xml

    <?xml version="1.0" encoding="UTF-8"?>
<project name="SkipIt" default="main">
<target name="main" unless="${A}">
<antcall target="secondTarget"></antcall>
</target>
<target name="secondTarget" unless="${B}">
<echo>A is not true and B is not true</echo>
</target>
</project>

如果您只有 2 个条件,则替代解决方案:使用 <skip>一个条件(即 Maven 的东西)和 unless 的配置属性(即 Ant 的东西)对于其他条件:

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>skiptThisConditionally</id>
<phase>test</phase>
<configuration>
<skip>${A}</skip>
<target name="anytarget" unless="${B}">
<echo>A is not true and B is not true</echo>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

关于maven-antrun-plugin 如果满足两个可能条件中的任何一个,则跳过目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15021439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com