首先,根据 Maven 1.x 网站,当前 maven 1.x 的稳定版本是 1.1 版本,而不是 1.4。其次,没有 AntRun 插件 1.7 版,据我所知,这是一个 Maven 2 插件。第三,您使用的语法似乎与Using Attributes非常相似,后者又是关于 Maven 2 的。
所以,我可能遗漏了一些东西,但这很令人困惑,你应该在你的问题中澄清这些观点。
无论如何,正如您明确提到的 Maven 1,我将尝试回答。如果我没记错的话,我会写一个自定义目标并使用 Jelly'score: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)。但我想你会的。脚本参考可能会对您有所帮助。
老实说,我真的希望你有充分的理由更喜欢 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
(这只是一个例子)。
但是,这一切都不是做事的“行家之道”。既然我对您正在尝试做的事情有了更好的了解(但不完全是因为您没有解释您的最终目标),我认为使用构建配置文件会更合适,并且在阅读了您自己的答案后,我认为您把事情复杂化了(而且你走错了路)。
我了解您是 Maven 初学者,但我建议您尝试使用它,而不是依赖 Ant,否则您将无法从中受益。此外,在提出问题时,与其要求特定的解决方案,不如解释您的一般问题,您会得到更好的答案。在这里,我无法提供更多指导,因为我不知道您真正想要实现什么。