想象一下,我有一个加载各种属性文件的ant构建系统。有时,在一个文件中声明的属性将用于另一个文件中声明的属性值。
例如:
File 1:
java.version=1.6
File 2:
jdk.path=/blah/foo/java/${java.version}
如果我在文件2之前加载文件1,这可以正常工作。但是,在某些情况下,替换需要以相反的顺序发生 - 文件2中声明的内容将由文件1使用。
由于外部约束和系统设计,无法组合这些文件。
有没有办法实现双向扩展?也许某种方式来后处理属性并应用其他扩展步骤?您可以假设扩展链中没有循环依赖关系。
答案 0 :(得分:2)
有趣的是,以下似乎有效:
文件test1:
a1=a1
a2=${b1}
a3=${b3}
文件测试2:
b1=b1
b2=${a1}
b3=${a2}
蚂蚁:
<!-- Repeat until result is fully resolved. -->
<var file="test1"/>
<var file="test2"/>
<!-- a3 = ${b3} -->
<var file="test1"/>
<var file="test2"/>
<!-- a3 = ${b1} -->
<var file="test1"/>
<var file="test2"/>
<!-- a3 = b1 -->
<echo>${a3}</echo>