假设我有一个加载各种属性文件的ant构建系统。有时,在一个文件中声明的属性在另一个文件中声明的属性值中使用。
例如:File 1:
java.version=1.6
File 2:
jdk.path=/blah/foo/java/${java.version}
如果在文件2之前加载文件1,则可以正常工作。然而,在某些情况下,替换需要以相反的顺序进行——在文件2中声明的内容将由文件1使用。
由于外部限制和系统设计,不可能合并这些文件。
有没有办法实现双向扩展?也许有一些方法可以后处理属性并应用额外的扩展步骤?你可以假设在扩展链中没有循环依赖。
有趣的是,下面的操作似乎有效:
文件test1:
a1=a1
a2=${b1}
a3=${b3}
文件test2:
b1=b1
b2=${a1}
b3=${a2}
Ant: <!-- 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>