Ant を使用した自動ビルド プロセスに取り組んでいます。
1 つの目標は、変数が既に設定されているかどうかを確認し、設定されていない場合は空の文字列に設定し、環境キーとして実行可能ファイルにエクスポートすることです。bla
プロパティが定義されているかどうかにかかわらず、複数のプロパティ ファイルがあります。したがって、ファイルのリストを繰り返し処理し、次のことを行います。
<for list="${propertyfiles}" param="mypropertyfile">
<var name="bla" unset="true" />
<property file="@{mypropertyfile}.properties" />
<property name="bla" value=""/>
... use the "bla" property for something ...
</for>
行を説明するには:
<var name="bla" unset="true" />
前のループパスから使用された値がないことを確認することです。プロパティが定義されているか定義されていないプロパティ ファイルを含めbla
ます。
<property file="@{mypropertyfile}.properties" />
プロパティを使用できることを確認しbla
ます。プロパティの不変性を使用するのが賢明だと思いました。そう
<property name="bla" value=""/>
プロパティファイルで定義されていない場合に備えて、プロパティを設定します。すでに定義されている場合、理論上、プロパティの初期値を上書きすることはできません。
ここで奇妙なことに、私の UNIX システムでは、このアプローチは魔法のように機能しますが、Windowsではそうではありません。定義されたプロパティ値は空の文字列で上書きされます。どちらのマシンにも ant 1.8 がインストールされています。
<if>
プロパティフラグを使用して別の方法で問題を解決できることは知ってい<isset>
ますが、これがどのように可能か疑問に思っています。この一貫性のない動作を理解するのを手伝っていただければ幸いです。