web-dev-qa-db-ja.com

設定されていない場合にのみAntプロパティを設定する方法

設定されていないという条件でAntプロパティを設定する方法がわかりません(つまり、プロパティファイルで定義されておらず、自動的にデフォルトになるはずです)。

これまでのところ、次のコードしかありません。

<condition property="core.bin" value="../bin">
    <isset property="core.bin"/>
</condition>

しかし、これは、値が<property>タグ。

現在設定されていないプロパティを初めて条件付きで設定する方法を知っていますか?

68
user64133

Property-taskでプロパティを設定するだけです。プロパティが既に設定されている場合、プロパティは不変であるため、値は変更されません。

ただし、条件に「not」を含めることもできます。

<condition property="core.bin" value="../bin">
   <not>  
      <isset property="core.bin"/>
   </not>
</condition>
112
Mnementh

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の可変タスク のようなものを使用する必要があります。

62
Andy Lynch

あなたがしたいことをする最も簡単な方法:

<if>
    <not>
        <isset property="your.property"/>
    </not>
    <then>
        <property name="your.property" value="your.value"/>
    </then>
</if>
6
skyline00

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>
3
user3584056

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 -->
2
Nachtfrost