跨两个文件双向解析属性

时间:2011-10-25 08:53:54

标签: java ant build

想象一下,我有一个加载各种属性文件的ant构建系统。有时,在一个文件中声明的属性将用于另一个文件中声明的属性值。

例如:

File 1:
java.version=1.6

File 2:
jdk.path=/blah/foo/java/${java.version}

如果我在文件2之前加载文件1,这可以正常工作。但是,在某些情况下,替换需要以相反的顺序发生 - 文件2中声明的内容将由文件1使用。

由于外部约束和系统设计,无法组合这些文件。

有没有办法实现双向扩展?也许某种方式来后处理属性并应用其他扩展步骤?您可以假设扩展链中没有循环依赖关系。

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>