在 Apache Ant 中,有没有办法从 ant 命令中获取参数并将其用作属性文件的键?

Posted

技术标签:

【中文标题】在 Apache Ant 中,有没有办法从 ant 命令中获取参数并将其用作属性文件的键?【英文标题】:In Apache Ant, is there a way to take an argument from an ant command and use that as a key for a property file? 【发布时间】:2014-07-27 03:19:09 【问题描述】:

假设我们有一个参数被传递给一个 ant 命令,如下所示:

ant -Dparameter="potato" myAntCommand

通常,我们会像这样在 build.xml 中获取该参数:

<target name="myAntCommand">
    <echo message="$parameter"/>
</target>

是否可以通过 ant 使用相同的参数从属性文件中获取值?

例如,如果我们有一个包含以下值的属性文件:

potato="HelloWorld"
strawberry="GoodbyeWorld"

有什么办法可以让前面的代码作为参数传入“potato”,并让“HelloWorld”作为输出?

【问题讨论】:

【参考方案1】:

一种方法,但是您必须下载一个 JAR 并将其添加到您的 Ant 安装中。

您将需要Antlibs Props,它被列为Apache Ant Libraries 之一,但无法在该站点下载(仅列出了 GIT 存储库)。正如您在最后一页中看到的,您可以使用 nested 委托来允许嵌套属性扩展。

JAR 是ant-props-1.0Alpha.jar。我不知道为什么它不再可用。搜索它,我发现它可以在this link 找到,它不是官方下载站点,但它现在可能有用。

您只需将 JAR 放入您的 $ANT_HOME/lib 目录即可在任何项目中使用它。

在您的build.xml 中,您必须为扩展设置命名空间和类型定义。在&lt;project&gt; 中的某处添加此内容:

<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

【讨论】:

感谢您的回复。这正是我想要的!

以上是关于在 Apache Ant 中,有没有办法从 ant 命令中获取参数并将其用作属性文件的键?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法通过ANT或其他一些构建自动化系统自动生成JWG文件/编译Openscript文件?

MAC安装ant的办法

ant安装-CENTOS7

有没有办法将样式化的组件用于 ANT 通知?

Apache Ant学习总结:Ant自动化脚本入门以及一些常用命令介绍

Apache Ant介绍