2011-05-04 129 views
5

我必須正確理解unless屬性。我有有一個屬性如下屬性文件:螞蟻除非屬性不工作?

module.project.enabled=false 
module.finance.enabled=true 

在我的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> 

當運行我的Ant目標的屬性似乎被讀取

[echo] Finance module enabled is true 
[echo] Project module enabled is false 

但是,當我看到${classes}目錄時,我希望在項目包和課程中看不到財務包中的類,但可惜它似乎不包括在內uding兩個包?

+1

我只看到'除非'(和'if')在任務上使用,從來沒有嵌套的配置元素,我不知道這*應該*工作。 – 2011-05-04 08:14:04

+0

你在1.8歲以上? – JoseK 2011-05-04 08:25:57

+0

不,我正在使用1.7.1 – 2011-05-04 08:41:23

回答

10

對於Ant 1.7及更早版本,ifunless屬性只檢查是否設置了屬性。他們並沒有真正檢查價值。您實際上可以將其設置爲任何內容,並且對if評估爲true,對unless評估爲false。同樣,如果您完全沒有設置它,則會爲if錯誤,unless錯誤。

在這兩種情況下,我都不知道ifunless可用於<exclude>

+3

從[Ant 1.8.0](http://ant.apache.org/manual/properties.html#if+unless)開始,true(或on或yes)的值將會啓用該項目,而虛假(或關閉或否)將禁用它。 – JoseK 2011-05-04 08:27:02

+0

@JoseK:哦,哇,我甚至沒有意識到這種改善。我更新了我的答案,以反映我所說的只適用於1.7和之前的版本。 – WhiteFang34 2011-05-04 08:29:37

+0

非常感謝,它在 2011-05-04 08:55:15