9

私のantスクリプトでは、条件が満たされたときに失敗することなく終了(ビルドの実行を停止)したいと考えています。私は使用しようとしました:

<if>
    <equals arg1="${variable1}" arg2="${variable2}" />
  <then>
    <fail status="0" message="No change, exit" />
  </then>
</if>

Ant スクリプトは条件付きで停止しますが、ビルドは失敗します。ビルドを停止したいのですが、エラーは発生しません。Jenkinsで「Invoke Ant」ステップを使用しています。

ありがとう。

4

3 に答える 3

11

アプローチを再考して、ant スクリプトをリファクタリングすることをお勧めします。「別の条件が満たされた場合にビルドに失敗する」のではなく、「特定の条件が満たされた場合にビルドを実行する」という問題にアプローチすると、実装が簡単になります。

<!-- add on top of your build file -->
<if>
    <equals arg1="${variable1}" arg2="${variable2}" />
  <then>
    <property name="runBuild" value="true"/>
  </then>
  <else>
    <property name="runBuild" value="false"/>
  </else>
</if>


<!-- add to the target that shall be executed conditionally -->
<target name="myTarget" if="${runBuild}">
...

<!-- exit message as separate target -->
<target name="exitTarget" unless="${runBuild}">
  <echo message="No Change, exit" />
</target>
于 2013-01-03T14:46:26.310 に答える
0

内部的<fail>に をスローしBuildExceptionてビルド プロセスを失敗させるため、このタスクを使用している限り、ant ビルドの終了時にエラーが発生します。

個人的には、ビルドを「正常に」終了する他のタスクがあるかどうかはわかりませんが、自分で作成することはまったく難しくありません。

次のコードを実行するタスクを書くとうまくいくはずです...

public void execute() {
    // do something as you like
    System.exit(0);
}
于 2013-01-03T12:08:36.627 に答える