2012-01-18 56 views
0

我希望能夠將一個可選參數傳遞給一個ant任務調用,以便在被調用目標被忽略時顯示爲未設置(在條件中很重要或在使用unlessif屬性時很重要)。我不知道是否設置了optArg,所以我無法對參數進行硬編碼。<ant>任務調用的可選參數?

示例:螞蟻目標someTarget需要強制參數mandatoryArg和支持可選的參數OPTARG

我可以cludgy複製像這樣實現這一點:

<if><equals arg1="${optArg}" arg2="true" /> 
    <then> 
     <ant dir="someDir" target="someTarget" inheritAll="false"> 
      <property name="mandatoryArg" value="42" /> 
      <property name="optArg" value="true" /> 
     </ant> 
    </then> 
    <else> 
     <ant dir="someDir" target="someTarget" inheritAll="false"> 
      <property name="mandatoryArg" value="42" /> 
     </ant> 
    </else> 
</if> 

我想離開了if語句,使螞蟻呼叫不重複,又不失可選性質OPTARG。我已經找到this question,這似乎涵蓋了一個不同的問題。

我使用Ant 1.7和ant-contrib。

任何想法?謝謝!

編輯:我也接受解釋爲什麼它真的不可能的答案。

回答

0

你也許能夠得到你想要使用<if>塊建立一個屬性集,然後用<propertyset refid="whatever"/>

+0

引用一個單一<ant>任務調用內部後務必附上代碼片段在反引號'的行爲像這樣'這樣你的代碼就可以看到了。乾杯〜 – 2012-01-18 15:28:41

+0

@David:聽起來很有希望,但是我怎麼去添加propertyset呢?你能提供一個代碼示例嗎?謝謝! – 2012-01-18 21:45:26

+0

好的,我自己發現。您可以定義一個包含mandatoryArg *和* optArg的屬性集,每次引用時都會對其進行動態評估。然後,當antcall發生時,它只包含實際定義的屬性。所以我會接受答案。 – 2012-01-20 16:55:20

相關問題