2012-05-17 31 views
5

如何在ant中取消設置屬性?所以這是完全刪除作爲財產?使用條件取消設置Ant中的屬性並刪除Ant中的屬性

<condition property="proguard.config" value="proguard.cfg"> 
     <isset property="proguarded"/> 
</condition> 


<condition property="proguard.config" value=""> 
     <not> 
     <isset property="proguarded"/> 
     </not> 
</condition> 

這似乎工作。但即使proguard存在諸如proguard.config這樣的屬性,proguard也會運行。那麼如何將proguard.config作爲一個屬性完全有條件地刪除呢?我知道如果proguard在.properties文件中看到proguard.config屬性會運行。

回答

8

Ant manual Property Task狀態:

屬性是不可改變的:誰設置屬性首先凍結其用於構建的休息;他們絕對不是變數。

話雖這麼說,有幾個解決方法:

  1. Local Task - 在給定的範圍「陰影」的同名屬性的本地地產在較高的範圍內(Macrodefs特別有用)

  2. Ant-Contrib Variable Task - 螞蟻的Contrib提供了靈活性,但同時也增加了依賴,有時會引誘你寫了可以在Ant腳本或自定義Ant任務可以更好地表達程序的ant代碼


在你上面的例子,如果屬性proguarded你的Ant項目的執行過程中不發生變化,那麼就沒有必要取消設置屬性。例如,您可以按如下條件執行目標:

<target name="proguarded-target" if="proguarded"> 
    ... 
</target> 

<target name="not-proguarded-target" unless="proguarded"> 
    ... 
</target>