2012-01-18 60 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