Ant可以从属性文件中扩展环境变量吗?

sfi*_*tts 11 ant

我有一个关于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>
Run Code Online (Sandbox Code Playgroud)

和属性文件test.props:

MY_PROPERTY=${env.MyEnvVar}
Run Code Online (Sandbox Code Playgroud)

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

ant -f test.xml -propertyfile test.props testProps
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

[echo] foo
[echo] ${env.MyEnvVar}
Run Code Online (Sandbox Code Playgroud)

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

[echo] foo
[echo] foo
Run Code Online (Sandbox Code Playgroud)

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

我使用的是Ant 1.6.5版.

mar*_*ton 23

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

<property file="test.props" />
Run Code Online (Sandbox Code Playgroud)

在你现有的property environment任务之后.

在全:

<property environment="env" />
<property file="test.props" />

<target name="testProps">
    <echo message="${env.MyEnvVar}"/>
    <echo message="${MY_PROPERTY}"/>
</target>
Run Code Online (Sandbox Code Playgroud)

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

  • 不完全是我希望的,但它确实有效.必须看看我能否做到这一点.谢谢(你的)信息. (2认同)