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

Java 如果junit测试失败,如何停止maven构建?,java,maven,Java,Maven,我已经建立了一个maven项目,它是创建一个JAR文件作为人工制品。现在我已经创建了一些JUnit测试,如果其中一个JUnit测试失败,我想停止maven构建。要做到这一点,需要采取哪些步骤?现在我得到一个JAR文件,尽管一个或多个JUnit测试失败 我已经在文件夹“src/main/resources”中创建了JUnit测试,下面是我的pom.xml的构建片段: <plugins> <plugin> <groupI

我已经建立了一个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>

org.apache.maven.plugins
maven编译器插件
2.0.2
符合事实的
符合事实的
${source.jdk}
${target.jdk}
org.apache.maven.plugins
maven汇编插件
带有依赖项的jar
错误的
${source.jdk}
${target.jdk}
${project.build.sourceEncoding}
${maven.build.timestamp}
符合事实的
符合事实的
符合事实的
解放党/
${project.groupId}.${project.artifactId}.myMainFile
错误的
带有依赖项的jar
程序集jar Id
包裹
仅有一个的

当您创建
maven
项目时,如果您使用
mvn clean install
构建源代码,它将自动使构建失败,表示测试失败,不需要任何其他东西


继续了解更多信息。

我知道您希望“快速失败”,但据我所知,答案是否定的。在谷歌上,我发现SureFire(运行junit测试用例的maven插件)出现了一个bug问题

允许“快速故障”或在第一次故障时停止运行

仍然处于开放状态

我已经在文件夹“src/main/resources”中创建了JUnit测试


那是错误的位置。将您的单元测试放入“src/test/java”中,Maven将处理其余部分。

您可以将此添加到命令行:
mvn安装-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>

org.apache.maven.plugins
maven surefire插件
${surefire.plugin.version}
符合事实的

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

作为补充信息-如果您没有遇到这种情况,maven很可能不会看到并运行您的测试类。看,这是错误的。使用
maven
您可以做
OP
想要做的事情。我已经做了一年多了。这个问题是关于
surefire
插件的,而不是关于
maven
对不起,那是我的错误。我将junit测试放在src/test/java中,而不是放在src/main/resource中这是Op想要的吗?Op不想继续他的构建,如果测试失败,他想让他的构建失败。要在测试失败时停止构建,只需在命令提示符中使用mvn clean install,如果任何测试失败,这将导致构建失败。您应该回答Op问题,而不是其他问题。