Ant属性可以解析其他属性吗?

可以通过属性文件设置Ant属性,从属性文件中解析其他属性?

例如,我可以这样做:

<property name="prop1" value="in_test_xml1" />
<property name="prop2" value="${prop1}" />

prop2变成“in_test_xml1”.那很好.

但在这种情况下,使用输入属性文件时:

prop1=sample_prop
prop2=${prop1}

prop2未设置为“sample_prop”

所以解析其他属性的属性只有在执行解析的属性在ant文件本身时才能正常工作.

这是预期还是我错过了什么?

最佳答案
Ant确实支持文件内属性扩展,请参阅手册中的“Property”任务的“属性文件”部分.

以下示例显示已解决的属性:

>在单个属性文件中
>从另一个属性文件中的一个属性文件
>在构建文件中

第一个属性文件:

$cat props1.properties
prop1=world
prop2=hello ${prop1}

第二个属性文件:

$cat props2.properties
prop3=goodbye ${prop1}

构建文件:

<project default="test">
  <property file="props1.properties"/>
  <property file="props2.properties"/>
  <property name="prop4" value="${prop3}, good luck"/>
  <target name="test">
    <echo message="prop1 = ${prop1}"/>
    <echo message="prop2 = ${prop2}"/>
    <echo message="prop3 = ${prop3}"/>
    <echo message="prop4 = ${prop4}"/>
  </target>
</project>

输出:

$ant
Buildfile: build.xml

test:
     [echo] prop1 = world
     [echo] prop2 = hello world
     [echo] prop3 = goodbye world
     [echo] prop4 = goodbye world, good luck

BUILD SUCCESSFUL
Total time: 0 seconds

是否有另一种不符合您的财产决议?

编辑

在您的评论之后,我现在明白,您使用-propertyfile命令行选项来指定Ant加载的属性文件(而不是像我上面那样在构建文件本身中指定文件).

我用这个快速测试,发现Ant 1.7.1没有对使用该命令行选项加载的文件进行文件内属性扩展.但蚂蚁1.8.2.

这是Ant Bug 18732.您应该能够通过更新您的Ant版本来解决.

转载注明原文:Ant属性可以解析其他属性吗? - 代码日志