2011-06-21 61 views
2

我想使用Ant屬性文件,使一個屬性文件從另一個繼承,但我不確定這是可能的。Ant屬性文件可以定義繼承嗎?

例如:

base.properties: 
prop1=base 

child.properties (inherit from base.properties): 
prop1=child // this should override prop1 in base.properties 

我知道我可以以適當的順序來實現這一目標通過CMD線通過他們,但我希望通過自己的文件中定義的繼承來實現它。

任何想法,我可以實現這一目標?

謝謝!

回答

2

Ant屬性是不可變的。如果首先加載child.properties,則將使用它的所有屬性定義而不是base.properties。

這也是命令行覆蓋工作的原因。

因此,按照從子級到父級的順序加載文件,並且您將具有某種層次結構的相似性。

+0

沒錯。如果屬性文件的順序正確,它們在本質上會覆蓋基礎。但有沒有一種方法可以基於文件中定義的繼承進行覆蓋? – glutz

2

核心Ant不支持您正在查找的內容。

一個典型的模式是在以級聯的方式構建文件加載的特性,例如像這樣:

<property file="${user.home}/${product}/${product.version}/build.properties"/> 
<property file="${user.home}/${product}/build.properties"/> 
<property file="${user.home}/build.properties"/> 
<property file="build.properties"/> 

文件不都需要存在。無論存在哪個文件,都按該順序加載。這提供了選擇性覆蓋屬性的簡單方法。