antcallが成功したかどうかを判断するには、成功とは何かをより注意深く定義する必要があります。それは意味することができます:
- 例外をスローせずに実行されたコード。
- コードはあなたがしたいことをしました。
最初のケースでは、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プロパティを設定するだけで、呼び出されたターゲットまたは依存しているターゲットが期待どおりに機能したかどうかを判断できます。