我正在运行一个Ant任务,使用maven-antrun-plugin在maven中运行junit测试。调用如下所示:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>ant-test</id>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks unless="maven.test.skip">
<ant antfile="${basedir}/build.xml" target="test">
<property name="build.compiler" value="extJavac" />
</ant>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
当测试失败时,构建将继续并报告成功。我尝试仅使用ant重现此行为(从命令行'ant -f example.xml'运行Ant):
<project name="example" basedir="." default="aa">
<target name="aa">
<ant antfile="build.xml" target="test" />
</target>
</project>
但在这种情况下,一切都如预期:第一次测试失败会停止构建并报告它不成功。它看起来像maven做了一些魔术(或以另一种方式调用蚂蚁)。
所以我的问题是如何在解决测试任务失败时如何实现失败的maven构建的效果。
答案 0 :(得分:11)
您可能需要查看antrun的failonerror属性:
<exec executable="python" dir="${project.root}/modules" failonerror="true"></exec>
答案 1 :(得分:4)
你的问题提出了一个明显的问题,为什么不简单地使用Maven来运行JUnit? surefire plugin将执行在测试 - 编译阶段编译成目标/测试类(通常是src / test / java的内容)的任何测试(在测试阶段)。有一个JavaWorld article介绍如何使用Junit和Maven,你可能会觉得有用
假设您有正当理由使用Ant来调用测试,则需要确保在测试无效时将Ant设置为失败。您可以通过配置JUnit task来完成此操作。您可能希望设置的属性是 haltonerror 或 haltonfailure 。或者,您可以在失败时设置属性,并使用 failureproperty 属性自行使Ant构建失败。
我已经包含了两个示例来演示导致Maven构建失败的Ant故障。第一个是直接调用失败任务,第二个调用build.xml中的任务,方式与您完成相同。
这个简单的例子表明,ant失败会导致Maven构建失败:
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>test</phase>
<configuration>
<tasks>
<fail message="Something wrong here."/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An Ant BuildException has occured: Something wrong here.
扩展示例以使用ant调用:
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>test</phase>
<configuration>
<tasks unless="maven.test.skip">
<ant antfile="${basedir}/build.xml" target="test">
<property name="build.compiler" value="extJavac" />
</ant>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
使用build.xml:
<?xml version="1.0"?>
<project name="test" default="test" basedir=".">
<target name="test">
<fail message="Something wrong here."/>
</target>
</project>
给出以下错误:
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
test:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An Ant BuildException has occured: The following error occurred while executing this line:
C:\test\anttest\build.xml:4: Something wrong here.