首先,根据 Maven 1.x 网站,目前 maven 1.x 的稳定版本是 1.1 版,而不是 1.4 版。其次,没有 AntRun 插件 1.7 版,据我所知,这是一个 Maven 2 插件。第三,您使用的语法似乎与 Using Attributes 非常相似,同样是关于 Maven 2。
所以,我可能遗漏了一些东西,但这很令人困惑,您也许应该在您的问题中澄清这些要点。
无论如何,正如您明确提到的 Maven 1,我会尝试回答。如果我没记错的话,我会编写一个自定义目标并使用 Jelly 的 core:if 或 core:when。为此,请在 maven.xml:
中提供类似的内容
<project xmlns:j="jelly:core" xmlns:ant="jelly:ant">
<goal name="my-goal">
<j:if test="${environment == 'PROD'}">
<ant:xxx .../>
</j:if>
</goal>
</project>
我真的不确定语法,所有这些 Maven 1 的东西都太远了,我没有测试它(我懒得安装 Maven 1)。但我想你会的。 scripting reference 可以帮助你。
说实话,我真的希望你有充分的理由更喜欢 Maven 1.x 而不是 Maven 2.x :)
更新: 看来 OP 实际上正在使用 Maven 2,所以我会相应地更新我的问题。要实现所需的行为,您可以使用 Ant-contrib 的 if 任务,如下所示:
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<taskdef resource="net/sf/antcontrib/antcontrib.properties"
classpathref="maven.plugin.classpath" />
<if>
<equals arg1="${foo}" arg2="bar" />
<then>
<echo message="The value of property foo is bar" />
</then>
<else>
<echo message="The value of property foo is not bar" />
</else>
</if>
</tasks>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
然后调用mvn compile -Dfoo=bar(这只是一个例子)。
但是,这一切都不是做事的“行家之道”。现在我更好地理解了你想要做什么(但不完全是因为你没有解释你的最终目标),我认为使用 build profiles 会更合适,并且在阅读了你自己的答案后,我认为你把事情复杂化了(而且你走错了路)。
我了解您是 Maven 初学者,但我建议您尝试使用它,而不是依赖 Ant,否则您将无法从中受益。此外,在提出问题时,与其要求特定的解决方案,不如解释您的一般问题,您会得到更好的答案。在这里,我无法提供更多指导,因为我不知道您真正想要实现什么。