【发布时间】:2011-04-04 03:49:37
【问题描述】:
我有一组嵌套的 Ant 构建文件,我需要控制每个“子”任务继承哪些属性。我试图将它们定义为属性集(以保持代码可管理),但与属性不同,这些不会被子任务继承。
下面的例子演示了这个问题,foo.* 被复制到中间项目而不是底部项目。如果我将每个属性定义为显式继承,例如bar.*,它们也会被底层项目继承。
有没有办法让一组属性一直继承下去,就像单个属性一样?在不重写子流程的情况下,还有什么我可以尝试的吗?
[top.xml]
<?xml version="1.0"?>
<project name="test-top">
<property name="foo.1" value="1"/>
<property name="foo.2" value="2"/>
<property name="bar.1" value="1"/>
<property name="bar.2" value="2"/>
<ant antfile="middle.xml" inheritall="false">
<propertyset>
<propertyref prefix="foo."/>
</propertyset>
<property name="bar.1" value="${bar.1}"/>
<property name="bar.2" value="${bar.2}"/>
</ant>
</project>
[middle.xml]
<?xml version="1.0"?>
<project name="test-middle">
<echo>foo ${foo.1} ${foo.2}</echo>
<echo>bar ${bar.1} ${bar.2}</echo>
<ant antfile="bottom.xml" inheritall="false"/>
</project>
[bottom.xml]
<?xml version="1.0"?>
<project name="test-bottom">
<echo>foo ${foo.1} ${foo.2}</echo>
<echo>bar ${bar.1} ${bar.2}</echo>
</project>
[ant -f top.xml 的输出]
[echo] foo 1 2
[echo] bar 1 2
[echo] foo ${foo.1} ${foo.2}
[echo] bar 1 2
【问题讨论】:
标签: ant build-process build-automation