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 http://ant.apache.org/manual/Tasks/property.html task.
以下示例显示了正在解析的属性:
- 在单个属性文件中
- 从一个属性文件到另一个属性文件
- 在构建文件中
第一个属性文件:
$ 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>
Output:
$ 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
是否有另一种财产解决方案不适合您?
Edit
根据您的评论,我现在了解到您正在使用-propertyfile
命令行选项指定 Ant 加载的属性文件(而不是像我上面那样在构建文件本身中指定文件)。
我对此进行了快速测试,发现 Ant 1.7.1 没有对使用该命令行选项加载的文件进行文件内属性扩展。但 Ant 1.8.2 可以。
这是蚂蚁错误 18732 https://issues.apache.org/bugzilla/show_bug.cgi?id=18732。您应该能够通过更新 Ant 版本来解决。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)