我正设法把我的项目打包。但是,在执行打包之前,它会自动运行测试。测试在数据库中插入一些内容。这不是我想要的,我需要避免在打包应用程序时运行测试。有人知道如何运行没有测试的包吗?
你可以传递maven.test.skip标志作为JVM参数,当包阶段(以及默认生命周期中的前一个阶段)运行时跳过运行测试:
maven.test.skip
mvn package -Dmaven.test.skip=true
你也可以单独将skipTests标志传递给mvn可执行文件。如果你想在你的POM中包含这个信息,你可以创建一个新的配置文件,你可以在其中配置maven-surefire-plugin到跳过测试。
skipTests
maven-surefire-plugin
运行maven
mvn package -Dmaven.test.skip
你只需要提供
-Dmaven.test.skip
你不再需要追加=true。
=true
测试应该总是在包之前运行[1]。如果您需要关闭测试,那么您做错了什么。换句话说,你在试图解决错误的问题。找出你真正的问题所在,然后提出这个问题。听起来像是数据库相关的。
当您需要快速生成用于本地开发使用的工件时,您可能会跳过测试,但一般来说,创建工件应该始终遵循成功的测试运行。
如果你不想设置命令行参数,你可以把这个插件配置添加到你的pom:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
很明显,你用错方法了。测试是预包装的重要组成部分。你不应该忽视或跳过它,而应该以正确的方式去做。尝试更改它插入数据的数据库(如test_db)。可能需要一段时间才能设置好。为了确保这个数据库可以永远使用,您应该在测试结束时删除所有数据。JUnit4有注释,这使您很容易。对正确的方法使用@Before, @After @Test注释。你需要花些时间,但这是值得的!
注意- dmarvin .test。跳过阻止Maven构建test-jar工件。
如果您想跳过测试,但按照正常的构建使用创建工件:
-Dmaven.test.skip.exec
只需提供下面提到的命令,它将忽略执行测试用例(但将编译测试代码):
mvn package -DskipTests
回答一个老生常谈的问题。如果你想避免一直传递命令行参数,你可以在pom.xml中添加这个:
<properties> <skipTests>true</skipTests> </properties>
如果你在Windows Powershell中尝试这个,你会得到这个错误:
[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...
这样做的原因是,在Powershell中“-”有特殊的含义,它会导致maven的问题。
-
解决方案是在它前面加上一个反撇号('),就像这样..
mvn `-Dmaven.test.skip=true install
参考:http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/
<properties> <maven.test.skip>true</maven.test.skip> </properties>
也是一种方法添加在pom文件
mvn clean install -Dmaven.test.skip=true
工作为我,因为-Dskip不再工作了。
-Dskip
最好和最简单的方法是,在IntelliJ Idea的“Maven Project”窗口中,不要点击测试按钮。我希望我帮到你了。祝你有愉快的一天。
在Intellij中,进入“视图->工具窗口->”,选择“Maven项目”。 在Lifecyle下拉菜单中,右键单击package ->,选择Create 'your-project [package]'…< / p >
在命令行字段中输入值:package -Dmaven.test.skip=true -f pom.xml。单击Apply,将出现Run Configurations下拉菜单以及您创建的自定义maven命令。
package -Dmaven.test.skip=true -f pom.xml
只是mvn clean install -DskipTests
mvn clean install -DskipTests
您可以将-DskipTests或-Dmaven.test.skip=true添加到任何mvn命令中以跳过测试。在你的情况下,它将如下所示:
-DskipTests
-Dmaven.test.skip=true
mvn
或
对于不感染maven测试的maven包:
<properties> <maven.test.failure.ignore>true</maven.test.failure.ignore> </properties>
在Inllij IDEA中,还有一个选项可以跳过测试目标。
进行maven构建和跳过测试的一个简写是:
下面两个命令是最有用的
mvn clean package -Dmaven.test.skip=true mvn clean package -DskipTests
谢谢
那些不想跳过测试用例的人。 就在主测试类注释出来或删除注释的上面:
//@SpringBootTest
然后,当Maven构建一个应用程序时,它仍然会在这个类中运行测试,但不会运行SpringBoot应用程序,因此不会测试到DB的连接,构建将成功。
你可以使用任何maven目标,比如打包/清洁安装
解决方案:1(包目标)
mvn package -Dmaven.test.skip mvn package -Dmaven.test.skip=true mvn package -DskipTests
解决方案:2(清洁安装目标)
mvn clean install -Dmaven.test.skip mvn clean install -Dmaven.test.skip=true mvn clean install -DskipTests
解决方案:3(在pom.xml文件中)
你可以在pom文件中使用maven-skipping-tests而不需要提供 像DskipTests, Dmaven.test.skip这样的属性
你可以在pom文件中使用maven-skipping-tests而不需要提供 像DskipTests, Dmaven.test.skip
Pom.xml
<properties> <java.version>1.8</java.version> <maven.test.skip>true</maven.test.skip> </properties>
稍后您可以使用maven命令:MVN清洁安装/ MVN包
参考:https://www.baeldung.com/maven-skipping-tests