的build.xml
<target name="main">
<ant antfile="build-foo.xml" dir="${basedir}" target="foo"
inheritAll="false" useNativeBasedir="true">
<property name="messages" value="NOT_FOO_BAR"/>
</ant>
</target>
积foo.xml
<target name="foo">
<property name="messages" value="FOO"/>
<ant antfile="build-bar.xml" dir="${basedir}" target="bar"
inheritAll="false" useNativeBasedir="true">
</ant>
</target>
积bar.xml
<target name="bar">
<property name="messages" value="BAR"/>
<echo message="messages = ${messages}"/>
</target>
尝试:
ant -buildfile build-foo.xml foo
the messages is BAR, as expected.
ant -buildfile build.xml main
the messages is NOT_FOO_BAR.
main中的属性是多级向下传递的,即使在build-foo.xml中不需要它:inheritAll = false。
如何防止属性传递给后代调用?感谢。
答案 0 :(得分:1)
您还可以通过旧项目在新项目中设置属性 使用嵌套属性标记。 始终传递这些属性 新项目以及在该项目中创建的任何项目无论如何 inheritAll 的设置。这允许您参数化您的 子项目。
而不是:
<target name="main">
<ant antfile="build-foo.xml" dir="${basedir}" target="foo"
inheritAll="false" useNativeBasedir="true"/>
<property name="messages" value="NOT_FOO_BAR"/>
</target>
满足您的期望。