fork=trueとfailonerror=trueを必ず使用してください。私は同じ問題に直面していましたが、これらの 2 つのプロパティを設定した後、思い通りに動作するようになりました。
簡単な授業がありました
package jonathanmv.tests;
public class ContinuousIntegration {
public static void main(String[] args) throws Exception {
throw new Exception("This is supposed to happen");
}
}
次に、単純な ant ビルド ファイル
<project name="Continuous Integration Build" basedir="." default="main">
<property name="package" value="jonathanmv.tests" />
<property name="src.dir" value="src" />
<property name="build.dir" value="build" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="jar.dir" value="${build.dir}/jar" />
<property name="jar.file" value="${jar.dir}/${package}.jar" />
<property name="lib.dir" value="lib" />
<property name="main-class" value="${package}.ContinuousIntegration" />
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar" />
</path>
<path id="application" location="${jar.file}" />
<target name="clean">
<delete dir="${build.dir}" />
</target>
<target name="compile">
<mkdir dir="${classes.dir}" />
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" includeantruntime="false" />
<copy todir="${classes.dir}">
<fileset dir="${src.dir}" excludes="**/*.java"/>
</copy>
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}" />
<jar destfile="${jar.file}" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}" />
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java fork="true" classname="${main-class}" failonerror="true">
<classpath>
<path refid="classpath" />
<path refid="application"/>
</classpath>
</java>
</target>
<target name="clean-build" depends="clean,jar" />
<target name="main" depends="clean,run" />
</project>
main クラスによってスローされた例外が原因でrunターゲットが失敗するため、 clean-buildとmainは実行されません。次の行は、実行ターゲットでトリックを行うものであることに注意してください
<!-- ... -->
<java fork="true" classname="${main-class}" failonerror="true">
<!-- ... -->
ant を実行すると、これが得られます
ビルドファイル: /home/team/workspace/CI/trunk/build.xml
clean: [delete] ディレクトリを削除中 /home/team/workspace/CI/trunk/build
compile: [mkdir] 作成したディレクトリ: /home/team/workspace/CI/trunk/build/classes [javac] 2 つのソース ファイルを /home/team/workspace/CI/trunk/build/classes にコンパイル [copy] 1 つのファイルをコピー/home/team/workspace/CI/trunk/build/classes へ
jar: [mkdir] 作成したディレクトリ: /home/team/workspace/CI/trunk/build/jar [jar] jar を構築: /home/team/workspace/CI/trunk/build/jar/jonathanmv.tests.jar
実行: [Java] 継続的統合は [java] 0 [main] を実行しましたjonathanmv.tests.ContinuousIntegration.main(不明なソース)
ビルドに失敗しました /home/team/workspace/CI/trunk/build.xml:41: Java が返されました: 1
合計時間: 1 秒