1

antスクリプトを含むbuild.xmlファイルがありますbuild.xmlで、プロパティenv.REVISIONに値を設定しています。ターゲット内で設定された値は、ターゲット外ではアクセスできません。たとえば、次のコードでは、$ {env.REVISION}は1.0.1.0に設定されていますが、ターゲット「Get_Revision」内のエコーは正しい値を示しますが、ターゲット「run」内のエコーはバージョン番号を置き換えません。echoステートメントは、出力を${env.REVISION}として提供します

<project name="module_name" default="run" xmlns:ivy="antlib:org.apache.ivy.ant">
  ...
  <target name="run" description="Run" depends="Get_Revision">
    <antcall target="Get_Revision" />
    <echo>${env.REVISION}</echo>
    <ivy:retrieve/>
  </target>
  <target name="Get_Revision" description ="Gets the revision number">
    ...
    <property name="env.REVISION" value="1.0.1.0" />
    <echo>${env.REVISION}</echo>
    ...
  </target>
  ...
</project>

また、このプロパティ$ {env.REVISION}を使用して、ivy.xmlファイルでも使用したいと思います。

誰かが私がこの問題を解決するのを手伝ってもらえますか?

4

1 に答える 1

3

antcallタスクを使用するときは、新しいコンテキストを作成します。

呼び出されたターゲットは新しいプロジェクトで実行されます。これは、呼び出されたターゲットによって設定されたプロパティ、参照などが、呼び出し元のプロジェクトに保持されないことを意味することに注意してください。

示されている例では、ターゲットでの宣言dependsと、ターゲットへのを使用しています。runantcallGet_Revision

上記antcallの理由により、 は希望する結果を与えません。

ただし、depends必要な結果が得られます。が含まれている場合、テスト シナリオ (2 番目のエコー) が失敗することは確かdependsですか?

ところで、env.プレフィックスは、従来、次のように使用して環境変数からロードされたプロパティに使用されます。

<property environment="env"/>
<echo>${env.SOME_VAR_NAME}</echo>
于 2012-07-02T14:05:45.683 に答える