Apache ant目标可以检测属性是否在命令行上被覆盖?

时间:2017-05-17 20:24:38

标签: ant

我想根据属性的来源更改我的一个蚂蚁目标中的逻辑。我们的ant目标的初始化导入属性文件,但是当我们想要覆盖属性时,我们在命令行上指定它。是否可以让ant目标知道属性是来自初始属性文件还是命令行?

如果属性文件具有属性" my.property"然后命令行显示:

ant -buildfile buildthis.xml my.target.to.call  -Dmy.property=overridesfilevalue

" my.target.to.call"能够根据" my.property"来检测和定义逻辑。是从命令行传入的?

1 个答案:

答案 0 :(得分:2)

Ant有一个名为isset的条件,它将检查是否设置了属性。您可以在加载属性文件之前运行此条件,然后将构建逻辑基于结果。

示例:

<condition property="property.override.detected">
    <isset property="property.to.override" />
</condition>

<property file="build.properties" />

<target name="do-this-if-the-property-was-overridden" if="property.override.detected">
    ...
</target>

<target name="do-this-if-the-property-was-not-overridden" unless="property.override.detected">
    ...
</target>

<target
    name="default"
    depends="
        do-this-if-the-property-was-overridden,
        do-this-if-the-property-was-not-overridden"
/>