【问题标题】:Optional parameter to <ant> task call?<ant> 任务调用的可选参数?
【发布时间】:2012-01-18 15:15:55
【问题描述】:

我希望能够将一个可选参数传递给一个 ant 任务调用,这样如果它被省略(在条件或使用 unlessif 属性时很重要),它就会在被调用目标中显示为未设置)。我不知道是否设置了 optArg,所以我无法对参数进行硬编码。

示例:ant 目标 someTarget 需要强制参数 mandatoryArg 并支持可选参数 optArg

我可以通过像这样的笨拙复制来实现这一点:

<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 语句,这样 ant 调用就不会重复,而不会失去 optArg 的可选特性。我已经找到this question,它似乎涵盖了另一个问题。

我使用 Ant 1.7 和 ant-contrib。

有什么想法吗?谢谢!

编辑:我也接受解释为什么它真的不可能的答案。

【问题讨论】:

    标签: ant ant-contrib


    【解决方案1】:

    您可以通过使用 &lt;if&gt; 块来构建属性集,然后稍后使用 &lt;propertyset refid="whatever"/&gt; 在单个 &lt;ant&gt; 任务调用中引用它来获得所需的行为

    【讨论】:

    • 确保将代码 sn-ps 括在反引号 like this 中,以便您的代码可见。干杯~
    • @David:听起来很有希望,但是我将如何添加到属性集呢?你能提供一个代码示例吗?谢谢!
    • 好的,我自己发现的。您定义一个包含mandatoryArg optArg 的属性集,每次引用它时都会对其进行动态评估。然后,当 antcall 发生时,它只包含实际定义的属性。所以我会接受答案。
    猜你喜欢
    • 2012-09-24
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多