Ant:如何防止属性传递给它的后代调用?

时间:2015-03-19 20:32:43

标签: ant properties

的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。

如何防止属性传递给后代调用?感谢。

1 个答案:

答案 0 :(得分:1)

来自ant manual ant task

  

您还可以通过旧项目在新项目中设置属性   使用嵌套属性标记始终传递这些属性   新项目以及在该项目中创建的任何项目无论如何   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>

满足您的期望。