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

Ant属性可以解析其他属性吗?,ant,properties,Ant,Properties,能否通过属性文件设置Ant属性,从属性文件解析其他属性 例如,我可以这样做: <property name="prop1" value="in_test_xml1" /> <property name="prop2" value="${prop1}" /> prop2未设置为“样本_prop” 因此,从其他属性解析属性似乎只有在执行解析的属性位于ant文件本身时才起作用 这是预期的还是我遗漏了什么?Ant支持文件内属性扩展,请参阅手册中的属性文件部分以了解任务 以下示例

能否通过属性文件设置Ant属性,从属性文件解析其他属性

例如,我可以这样做:

<property name="prop1" value="in_test_xml1" />
<property name="prop2" value="${prop1}" />
prop2未设置为“样本_prop”

因此,从其他属性解析属性似乎只有在执行解析的属性位于ant文件本身时才起作用


这是预期的还是我遗漏了什么?

Ant支持文件内属性扩展,请参阅手册中的属性文件部分以了解任务

以下示例显示正在解析的属性:

  • 在单个属性文件中
  • 从一个属性文件到另一个属性文件
  • 在生成文件中
第一个属性文件:

prop1=sample_prop
prop2=${prop1}
$ cat props1.properties
prop1=world
prop2=hello ${prop1}
$ cat props2.properties
prop3=goodbye ${prop1}
第二个属性文件:

prop1=sample_prop
prop2=${prop1}
$ 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>
是否存在另一种不适用于您的财产解决方案

编辑

根据您的评论,我现在了解到您正在使用
-propertyfile
命令行选项为Ant指定要加载的属性文件(而不是像我上面所做的那样在构建文件本身中指定文件)

我对此进行了快速测试,发现Ant 1.7.1没有对使用该命令行选项加载的文件进行文件内属性扩展。但Ant1.8.2确实如此


这是蚂蚁。您应该能够通过更新您的Ant版本来解决此问题。

此任务更简单的解决方案是使用Ant contrib任务:Propertycopy

从:


将displayName设置为“我的组织”。

我正在通过命令行从propertyfile导入属性。在这种情况下,我看不到属性得到扩展。好的,因此您使用的是
-propertyfile
命令行选项。我已经更新了我的答案。