我正设法把我的项目打包。但是,在执行打包之前,它会自动运行测试。测试在数据库中插入一些内容。这不是我想要的,我需要避免在打包应用程序时运行测试。有人知道如何运行没有测试的包吗?
你可以传递maven.test.skip标志作为JVM参数,当包阶段(以及默认生命周期中的前一个阶段)运行时跳过运行测试:
mvn package -Dmaven.test.skip=true
您还可以单独将skipTests标志传递给mvn可执行文件。如果您希望在POM中包含此信息,可以创建一个新的配置文件,在其中配置maven-surefire-plugin以跳过测试。
测试应该总是在包之前运行[1]。如果您需要关闭测试,那么您做错了什么。换句话说,你在试图解决错误的问题。找出你真正的问题所在,然后提出这个问题。听起来像是数据库相关的。
当您需要快速生成用于本地开发使用的工件时,您可能会跳过测试,但一般来说,创建工件应该始终遵循成功的测试运行。
如果你不想设置命令行参数,你可以把这个插件配置添加到你的pom:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
You are, obviously, doing it the wrong way. Testing is an important part of pre-packaging. You shouldn't ignore or skip it, but rather do it the right way. Try changing the database to which it inserts the data(like test_db). It may take a while to set it up. And to make sure this database can be used forever, you should delete all the data by the end of tests. JUnit4 has annotations which make it easy for you. Use @Before, @After @Test annotations for the right methods. You need to spend sometime on it, but it will be worth it!
注意- dmarvin .test。跳过阻止Maven构建test-jar工件。
如果您想跳过测试,但按照正常的构建使用创建工件:
-Dmaven.test.skip.exec
回答一个老生常谈的问题。如果你想避免一直传递命令行参数,你可以在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文件
在Intellij中,进入“View -> Tool Windows ->”,选择“Maven Projects”。 在Lifecyle下拉菜单中,右键单击package ->,选择Create 'your-project [package]'…
输入这个值:package -Dmaven.test。skip=true -f命令行字段中的pom.xml。单击Apply,将出现Run Configurations下拉菜单以及您创建的自定义maven命令。
您可以添加-DskipTests或-Dmaven.test。对于跳过测试的任何MVN命令,Skip =true。在你的情况下,它将如下所示:
mvn package -DskipTests
OR
mvn package -Dmaven.test.skip=true
对于不感染maven测试的maven包:
<properties>
<maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
下面两个命令是最有用的
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-跳过-测试,而无需提供 DskipTests、dmarvin .test.skip等属性
Pom.xml
<properties>
<java.version>1.8</java.version>
<maven.test.skip>true</maven.test.skip>
</properties>
以后可以使用maven命令:mvn clean安装/mvn包
参考:https://www.baeldung.com/maven-skipping-tests
推荐文章
- 无法在Flutter上找到捆绑的Java版本
- 如何在Kotlin解析JSON ?
- 如何在新的材质主题中改变背面箭头的颜色?
- 如何设置OkHttp连接超时
- 用于桌面应用程序的Swing vs JavaFx
- 为什么这个Java程序会终止,尽管它显然不应该(也没有)终止?
- Maven project.build.directory
- 使用split("|")按管道符号拆分Java字符串
- 当内存不足导致抛出OutOfMemoryError时会发生什么?
- 检查ArrayList中是否存在值
- 我们能在Java中创建无符号字节吗
- 同步vs锁定
- 在ExecutorService的提交和执行之间进行选择
- 如何在javadoc中转义@字符?
- 如何在Java中创建唯一的ID ?