Apache ant 目标是否可以检测 属性 是否在命令行上被覆盖?
Can Apache ant target detect whether property was overridden on command line?
我想根据 属性 的来源更改我的一个 ant 目标中的逻辑。我们的 ant 目标的初始化导入一个属性文件,但是当我们想要覆盖 属性 时,我们在命令行上指定它。 ant 目标是否有可能知道 属性 是来自初始 属性 文件还是来自命令行?
如果属性文件有属性 "my.property"然后命令行显示:
ant -buildfile buildthis.xml my.target.to.call -Dmy.property=overridesfilevalue
"my.target.to.call" 是否能够根据 "my.property" 是否从命令行传入来检测和定义逻辑?
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"
/>
我想根据 属性 的来源更改我的一个 ant 目标中的逻辑。我们的 ant 目标的初始化导入一个属性文件,但是当我们想要覆盖 属性 时,我们在命令行上指定它。 ant 目标是否有可能知道 属性 是来自初始 属性 文件还是来自命令行?
如果属性文件有属性 "my.property"然后命令行显示:
ant -buildfile buildthis.xml my.target.to.call -Dmy.property=overridesfilevalue
"my.target.to.call" 是否能够根据 "my.property" 是否从命令行传入来检测和定义逻辑?
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"
/>