有一种方法,但是您必须下载一个 JAR 并将其添加到您的 Ant 安装中。
您将需要Antlibs Props,它被列为Apache Ant Libraries 之一,但无法在该站点下载(仅列出了 GIT 存储库)。正如您在最后一页中看到的,您可以使用 nested 委托来允许嵌套属性扩展。
JAR 是ant-props-1.0Alpha.jar。我不知道为什么它不再可用。搜索它,我发现它可以在this link 找到,它不是官方下载站点,但它现在可能有用。
您只需将 JAR 放入您的 $ANT_HOME/lib 目录即可在任何项目中使用它。
在您的build.xml 中,您必须为扩展设置命名空间和类型定义。在<project> 中的某处添加此内容:
<typedef uri="antlib:org.apache.ant.props"
resource="org/apache/ant/props/antlib.xml"
classpath="ant-props-1.0Alpha.jar"/>
然后你可以像这样使用打开功能:
<propertyhelper xmlns:props="antlib:org.apache.ant.props">
<props:nested />
</propertyhelper>
现在您可以使用${${property}} 语法来解析解析为另一个属性的属性。
这是一个完整的例子。我在文件中声明了属性,但它与 Properties 文件中的属性 或在命令行中使用 -D 的属性相同:
<project default="command">
<typedef uri="antlib:org.apache.ant.props"
resource="org/apache/ant/props/antlib.xml"
classpath="ant-props-1.0Alpha.jar"/>
<propertyhelper xmlns:props="antlib:org.apache.ant.props">
<props:nested />
</propertyhelper>
<property name="potato" value="HelloWorld"/>
<property name="parameter" value="potato"/>
<target name="command">
<echo message="${${parameter}}"/>
</target>
</project>
当你运行时:
ant
打印出来:
command:
[echo] HelloWorld