Ant 支持文件内属性扩展,参见手册中
Property 任务的 Property File 部分。
以下示例显示了属性的解析:
- 在单个属性文件中
- 从一个属性文件中获取另一个属性文件的属性
- 在构建文件中
第一个属性文件:
$ 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没有对使用该命令行选项加载的文件进行文件内属性扩展。但是Ant 1.8.2会这样做。
这是Ant Bug 18732。通过更新Ant版本,您应该能够解决这个问题。
ant -Dprop1=world '-Dprop2=hello ${prop1}' test
。@ewan.chalmers - ptha