3

私はantスクリプトに非常に慣れていないので、ビルドが成功したかどうかを知りたいです。私のメイン ターゲットには 2 つの antcall があり、メイン ターゲットを評価するために、それらが成功したかどうかを確認する方法がわかりません。

すべてを実行することが私の主な目標です

<target name="run all">
<antcall target="Run basic configuration" />
<antcall target="Run custom configuration"/>

「すべて実行」ターゲットに失敗条件を追加したいと考えています。各ターゲットは成功したかどうかを個別にチェックしますが、アリを呼び出すターゲットが失敗した場合に備えて、それらが失敗したかどうかを知りたいです。また、一方が失敗した場合、もう一方が呼び出されますか?

4

1 に答える 1

2

antcallが成功したかどうかを判断するには、成功とは何かをより注意深く定義する必要があります。それは意味することができます:

  1. 例外をスローせずに実行されたコード。
  2. コードはあなたがしたいことをしました。

最初のケースでは、antcallの実行をtrycatchブロックでラップして、例外をキャッチできます。trycatchタスクはant-contribの一部ですが、Antコーディングで頻繁に使用されます。あなたがするだろう:

<trycatch property="exception.message" reference="exception.object">
<try>
   <antcall target="targetName"/>
</try>
<catch>
   <!-- handle exception logic here -->
</catch>
<finally>
   <!-- do any final cleanup -->
</finally>
</trycatch>

2番目のケースでは、コードが意図したとおりに実行されたことを示す状態を呼び出し元に返す必要があります。

antcallタスクはantファイル(例:build.xml)をリロードするため、コストのかかる操作になる可能性があることに注意してください。antcallタスクを使用する代わりの方法があります。

  • antcallbackタスク(ant-contrib)を使用します。antcallbackタスクは、特にデータを返す必要性に対処します。
  • 依存タスクを呼び出すターゲットを定義するときは、 depends属性を使用します。
  • runtargetタスク(ant-contrib)を使用します。runtargetを使用すると、すべてのプロパティが渡され、ターゲットに設定したすべてのプロパティを呼び出し元が利用できるようになります。
  • macrodefタスクを使用します。antファイルの再解析を回避し、デフォルト値で属性を渡すことができ、ネストされた要素を渡すことができます。そのため、ほとんどの場合、これが推奨されるソリューションです。

上記の各ケースでは、呼び出し元のターゲットで検査できるreturnプロパティを設定するだけで、呼び出されたターゲットまたは依存しているターゲットが期待どおりに機能したかどうかを判断できます。

于 2013-02-12T16:18:35.933 に答える