設定されていないという条件でAntプロパティを設定する方法がわかりません(つまり、プロパティファイルで定義されておらず、自動的にデフォルトになるはずです)。
これまでのところ、次のコードしかありません。
<condition property="core.bin" value="../bin">
<isset property="core.bin"/>
</condition>
しかし、これは、値が<property>
タグ。
現在設定されていないプロパティを初めて条件付きで設定する方法を知っていますか?
Property-taskでプロパティを設定するだけです。プロパティが既に設定されている場合、プロパティは不変であるため、値は変更されません。
ただし、条件に「not」を含めることもできます。
<condition property="core.bin" value="../bin">
<not>
<isset property="core.bin"/>
</not>
</condition>
Antはデフォルトでこれを行います。プロパティがすでに設定されている場合;再度設定しても効果はありません。
<project name="demo" default="demo">
<target name="demo" >
<property name="aProperty" value="foo" />
<property name="aProperty" value="bar" /> <!-- already defined; no effect -->
<echo message="Property value is '${aProperty}'" /> <!-- Displays 'foo' -->
</target>
</project>
与える
/c/scratch> ant -f build.xml
Buildfile: build.xml
demo:
[echo] Property value is '${aProperty}'
BUILD SUCCESSFUL
Total time: 0 seconds
/c/scratch> ant -f build.xml
Buildfile: build.xml
demo:
[echo] Property value is 'foo'
BUILD SUCCESSFUL
プロパティは再定義できません。これを行うには、 ant-contribの可変タスク のようなものを使用する必要があります。
あなたがしたいことをする最も簡単な方法:
<if>
<not>
<isset property="your.property"/>
</not>
<then>
<property name="your.property" value="your.value"/>
</then>
</if>
: https://ant.Apache.org/manual/Tasks/condition.html 内で「else」を使用することのサポートがあり、正確な目的に役立ちます。
else
The value to set the property to if the condition evaluates to false. By default the property will remain unset. Since Apache Ant 1.6.3
に変更:
<condition property="core.bin" else="../bin">
<isset property="core.bin"/>
</condition>
Antのプロパティは不変です。定義後は変更できません。
しかし Ant Contrib パッケージはvariable
タスクを提供します。プロパティのように機能しますが、値は変更および設定解除できます。 可変タスクのドキュメント からの例:
<var name="x" value="6"/>
<if>
<equals arg1="${x}" arg2="6" />
<then>
<var name="x" value="12"/>
</then>
</if>
<echo>${x}</echo> <!-- will print 12 -->