Убедитесь, что вы используете fork = true и failonerror = true .Я столкнулся с той же проблемой, но после того, как эти два свойства были установлены, я заработал, как хотел.
У меня был простой класс
package jonathanmv.tests;
public class ContinuousIntegration {
public static void main(String[] args) throws Exception {
throw new Exception("This is supposed to happen");
}
}
Затем простой файл сборки муравья
<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>
clean-build и main не запускаются, поскольку цель run завершается неудачно из-за исключения, выданного основным классом.Обратите внимание, что следующая строка выполняет трюк в run target
<!-- ... -->
<java fork="true" classname="${main-class}" failonerror="true">
<!-- ... -->
Когда я выполняю ant, это то, что я получаю
Buildfile: /home/team/workspace/CI/trunk/build.xml
clean: [удалить] Удаление каталога / 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 /команда / рабочее пространство / CI / багажник / сборка / классы
jar: [mkdir] Созданный каталог: / home / team / рабочая область / CI / багажник / сборка / jar [jar] Building jar: / home / team /рабочая область / CI / trunk / build / jar / jonathanmv.tests.jar
run: [java] Непрерывная интеграция run [java] 0 [главная] ИНФОРМАЦИЯ jonathanmv.tests.ContinuousIntegration - Непрерывная интеграция> run [java]Исключение в потоке "main" java.lang.Exception: это должно произойти [java] в jonathanmv.tests.ContinuousIntegration.main (неизвестный источник)
BUILD FAILED /home/team/workspace/CI/trunk/build.xml:41: Java вернуло: 1
Общее время: 1 секунда