1

ファイルの先頭に以下をインポートする Ant ビルドファイルがあります。

<project name="..." ...>
    <property file="build.properties"/>
    ...

プロジェクト ルートには、2 つのプロパティ ファイルがあります:build.propertiesspecial-config.properties. から次のプロパティを読み取る必要があるターゲットを定義していますspecial-config.properties:

always.ask=true

そのため、ターゲットは次のようにする必要があります(build.propertiesこのターゲットが実行されるずっと前に、プロパティ ファイルとして既に設定されていることに注意してください)。

<target name="exec-special-logic">
    <!-- Somehow read special-config.properties#always.ask and set it to a local variable... -->
</target>

しかし、この 2 番目のプロパティ ファイルをロードして、そのプロパティ ( などalways.ask) を Ant で使用できるようにする方法については確信があります。前もって感謝します。

4

1 に答える 1

3

好きなだけ多くの異なるファイルからプロパティを読み取ることができるので、

<property file="build.properties"/>
<property file="build.properties.part2"/>

等々。Ant では、プロパティに設定された最初の値が固定されます。プロパティは静かに不変です。したがって、次の場合:

<property name="my.prop" value="one" />

最初のファイルのどこかに

<property name="my.prop" value="two" />

後で - おそらく 2 番目のファイルで、ビルド中はプロパティの値が「1」になります。

最近のバージョンの機能は、プロパティを実行ブロックにローカライズできることです。これにより、不変性を「回避」できます。Ant local taskのドキュメントから直接引用した例を次に示します。

<property name="foo" value="foo"/>

<target name="step1">
    <echo>Before local: foo is ${foo}</echo>
    <local name="foo"/>
    <property name="foo" value="bar"/>
    <echo>After local: foo is ${foo}</echo>
</target>

<target name="step2" depends="step1">
    <echo>In step2: foo is ${foo}</echo>
</target>

出力

step1:
     [echo] Before local: foo is foo
     [echo] After local: foo is bar

step2:
     [echo] In step2: foo is foo
于 2013-01-30T01:02:24.587 に答える