【问题标题】:Can Ant expand environment variables from a properties file?Ant 可以从属性文件中扩展环境变量吗?
【发布时间】:2011-03-15 13:15:05
【问题描述】:

我有一个关于 Ant 及其对环境变量的处理的问题。 为了说明,我有一个小样本。

给定 Ant 构建文件 test.xml:

<project name="myproj" default="testProps">

    <property environment="env"/>

    <target name="testProps">
            <echo message="${env.MyEnvVar}"/>
            <echo message="${MY_PROPERTY}"/>
    </target>
</project>

还有属性文件test.props:

MY_PROPERTY=${env.MyEnvVar}

现在将环境变量 MyEnvVar 设置为某个值(在我的例子中为 foo)并使用以下命令行运行 Ant:

ant -f test.xml -propertyfile test.props testProps

我得到的输出是:

[echo] foo
[echo] ${env.MyEnvVar}

我想知道是否有任何方法可以构造输入属性文件,以便我得到

[echo] foo
[echo] foo

也就是说,我想在属性文件中命名一个环境变量,它会在 Ant 脚本中被替换。注意 - 我知道如何直接访问环境变量(就像这里所做的那样)。我需要做的是使用一组 Ant 脚本,这些脚本期望在使用不同名称定义相同属性的环境中拥有一个属性集合。因此想到在属性文件中“桥接”它们。

我使用的是 Ant 1.6.5 版。

【问题讨论】:

    标签: ant


    【解决方案1】:

    您需要在环境之后读取test.props 属性文件 - 您可以使用另一个property 任务来执行此操作,即添加

    <property file="test.props" />
    

    在您现有的property environment 任务之后。

    全文:

    <property environment="env" />
    <property file="test.props" />
    
    <target name="testProps">
        <echo message="${env.MyEnvVar}"/>
        <echo message="${MY_PROPERTY}"/>
    </target>
    

    当您在命令行上提供属性文件时,它会在构建内容之前进行处理,但那时 ${env.MyEnvVar} 尚未设置。

    【讨论】:

    • 不完全是我所希望的,但它确实有效。必须看看我能不能完成这项工作。感谢您的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2014-08-06
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多