我对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。
答案 0 :(得分:22)
您需要在环境之后阅读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}
。