在Apache Ant中,是否有一种方法可以从Ant命令中获取参数并将其用作属性文件的键?



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

ant -Dparameter="potato" myAntCommand

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

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

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

例如,如果我们有一个包含以下值的属性文件:
potato="HelloWorld"
strawberry="GoodbyeWorld"

是否有任何方法我可以有前面的代码传递在"土豆"作为参数,并有"HelloWorld"作为输出?

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

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

JAR是ant-props-1.0Alpha.jar。我不知道为什么它不再可用了。搜索它,我发现它可以在这个链接,这不是一个官方的下载网站,但它可能是有用的,现在。

你只需要把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"/>

然后你可以像这样使用turn the feature on:

<propertyhelper xmlns:props="antlib:org.apache.ant.props">
    <props:nested />
</propertyhelper>

现在您可以使用${${property}}语法来解析解析为另一个属性的属性。

下面是一个完整的例子。我在文件中声明了属性,但它与属性文件中的属性或在命令行使用-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

相关内容

  • 没有找到相关文章

最新更新