如果junit测试失败,如何停止maven构建?

时间:2014-08-11 09:53:34

标签: java maven

我已经设置了一个maven项目,它创建了一个JAR文件作为人工制品。现在我已经创建了一些JUnit测试,如果其中一个junit测试失败,我想停止maven构建。这样做需要哪些步骤?现在我得到一个JAR文件,尽管一个或多个JUnit测试失败了。

我在“src / main / resources”文件夹中创建了我的JUnit测试,这里是我的pom.xml的构建片段:

    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
                <optimize>true</optimize>
                <fork>true</fork>
                <source>${source.jdk}</source>
                <target>${target.jdk}</target>                  
            </configuration>
        </plugin>   

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>
                        jar-with-dependencies
                    </descriptorRef>
                </descriptorRefs>
                <archive>
                    <addMavenDescriptor>false</addMavenDescriptor>                      
                    <manifestEntries>
                        <Source-JDK>${source.jdk}</Source-JDK>
                        <Target-JDK>${target.jdk}</Target-JDK>                                      
                        <Project-Build-SourceEncoding>${project.build.sourceEncoding}</Project-Build-SourceEncoding>    
                        <Maven-Build-Timestamp>${maven.build.timestamp}</Maven-Build-Timestamp>
                    </manifestEntries>
                    <manifest>  
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>                       
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>${project.groupId}.${project.artifactId}.myMainFile</mainClass>
                    </manifest>
                </archive>
                <appendAssemblyId>false</appendAssemblyId>
                <classifier>jar-with-dependencies</classifier>
            </configuration>
            <executions>
                <execution>
                    <id>assembly-jar-Id</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

4 个答案:

答案 0 :(得分:3)

当您创建maven项目并且使用mvn clean install来构建源代码时,它将自动使您的构建失败,说测试失败不需要任何其他事情。

关注this了解详情。

答案 1 :(得分:0)

  

我在文件夹&#34; src / main / resources&#34;

中创建了我的JUnit测试

那是错误的位置。将您的单元测试放入&#34; src / test / java&#34;而Maven将负责其余的工作。

答案 2 :(得分:-2)

我知道你正在寻找快速失败的&#39;但据我所知,答案是否定的。在谷歌搜索,我发现了一个针对SureFire(运行junit测试用例的maven插件)引发的bug问题。

  

允许&#34;快速失败&#34;或者在第一次失败时停止运行http://jira.codehaus.org/browse/SUREFIRE-580

仍然处于开放状态。

答案 3 :(得分:-2)

您可以将其添加到命令行:mvn install -Dmaven.test.failure.ignore=true     或者在你的pom.xml中使用下面的插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${surefire.plugin.version}</version>
    <configuration>
        <!-- Build, even if tests fail -->
        <testFailureIgnore>true</testFailureIgnore>
    </configuration>
</plugin>

因此,即使您的任何测试失败,它也会忽略并继续您的构建过程而不会失败。