跨两个文件双向解析属性



假设我有一个加载各种属性文件的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>

相关内容

  • 没有找到相关文章

最新更新