Ant除非属性不起作用?

Cli*_*sch 5 java ant

我必须不unless正确理解属性.我有一个属性文件,其属性如下:

module.project.enabled=false
module.finance.enabled=true
Run Code Online (Sandbox Code Playgroud)

在我的Ant构建文件中,我有以下内容

<echo message="Finance module enabled is ${module.finance.enabled}"/>
<echo message="Project module enabled is ${module.project.enabled}"/>
<javac srcdir="src" destdir="${classes}" debug="true">
    <classpath>
        <pathelement path="src"/>
        <fileset dir="web/WEB-INF/lib" includes="*.jar"/>
        <fileset dir="lib" includes="*.jar"/>
        <fileset dir="${GWT.HOME}" includes="gwt-user.jar,gwt-servlet.jar"/>
    </classpath>
    <exclude name="bla/finance/*.java" unless="${module.finance.enabled}"/>
    <exclude name="bla/project/*.java" unless="${module.project.enabled}"/>
</javac>
Run Code Online (Sandbox Code Playgroud)

运行我的ant目标时,似乎可以读取属性

 [echo] Finance module enabled is true
 [echo] Project module enabled is false
Run Code Online (Sandbox Code Playgroud)

但是当我查看${classes}目录时,我希望看到项目包中没有类和财务包中的类,但是它似乎排除了两个包?

Whi*_*g34 10

对于Ant 1.7和之前,ifunless属性仅检查是否设置了属性.他们实际上没有检查价值.实际上,您可以将其设置为任何内容,并将其评估为true if和false unless.同样,如果你根本没有设置它,那么你会得到假的,if并且是真的unless.

在任何一种情况下,我都不知道if并且unless可以使用<exclude>.

  • 从[Ant 1.8.0]开始(http://ant.apache.org/manual/properties.html#if+unless),值为true(或on或yes)将启用该项,而false(或关闭或不)将禁用它. (3认同)