我正在尝试打包我的项目。但是,它会自动运行之前执行打包的测试。测试在数据库中插入一些内容。这不是我想要的,我需要避免在打包应用程序时运行测试。有人知道如何在没有测试的情况下运行包吗?
运行maven
mvn package -Dmaven.test.skip
只需提供下面提到的命令,它将忽略执行测试用例(但会编译测试代码):
mvn package -DskipTests
mvn clean install -DskipTests
时,-DskipTests
对我不起作用
-DskipTests
与 -Dmaven.test.skip.exec=true
stackoverflow.com/a/21933970/32453 相同,是的,它编译测试而不运行它们(而 -Dmaven.test.skip=true
不编译它们)
如果您不想设置命令行参数,可以将此插件配置添加到您的 pom:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
请注意, -Dmaven.test.skip 会阻止 Maven 构建 test-jar 工件。
如果您想跳过测试但按照正常构建使用创建工件:
-Dmaven.test.skip.exec
如果您在 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
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
也是在pom文件中添加的一种方式
在 Inllij IDEA 中,还有一个选项可以跳过测试目标。
https://i.stack.imgur.com/512iH.png
您只需提供
-Dmaven.test.skip
您不再需要附加 =true
。
您可以将 maven.test.skip
标志作为 JVM 参数传递,以在运行包阶段(以及默认生命周期中的先前阶段)时跳过正在运行的测试:
mvn package -Dmaven.test.skip=true
您也可以将 skipTests
标志单独传递给 mvn 可执行文件。如果您想将此信息包含在您的 POM 中,您可以创建一个新配置文件,您可以在其中将 maven-surefire-plugin
配置为 skip tests。
在这里回答一个古老且公认的问题。如果你想避免一直传递命令行参数,你可以在你的 pom.xml 中添加它:
<properties>
<skipTests>true</skipTests>
</properties>
您可以将 -DskipTests
或 -Dmaven.test.skip=true
添加到任何 mvn
命令以跳过测试。在您的情况下,它将如下所示:
mvn package -DskipTests
或者
mvn package -Dmaven.test.skip=true
只是mvn clean install -DskipTests
进行 maven 构建和跳过测试的简写符号是:
mvn clean install -DskipTests
以下两个命令最有用
mvn clean package -Dmaven.test.skip=true
mvn clean package -DskipTests
谢谢
测试应始终[1] 在打包之前运行。如果您需要关闭测试,那么您做错了什么。换句话说,你试图解决错误的问题。弄清楚你的问题到底是什么,然后问这个问题。听起来它与数据库有关。
[1] 当您需要快速生成工件以供本地开发使用时,您可能会跳过测试,但通常,创建工件应始终遵循成功的测试运行。
对于没有感染maven测试的maven包:
<properties>
<maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
在 Intellij 中,转到查看 -> 工具窗口 -> 选择 Maven 项目。在 Lifecyle 下拉菜单中,右键单击 package -> 选择 Create 'your-project [package]'...
在命令行字段中输入此值:package -Dmaven.test.skip=true -f pom.xml
。单击应用,运行配置下拉菜单应与您创建的自定义 maven 命令一起出现。
那些不想跳过测试用例的人。就在主测试类的上方注释掉或删除注释:
//@SpringBootTest
那么当Maven构建一个应用程序时,它仍然会在这个类内部运行测试,但不会运行SpringBoot应用程序,因此不会测试与DB的连接,构建会成功。
显然,你做错了。测试是预包装的重要组成部分。你不应该忽略或跳过它,而应该以正确的方式去做。尝试更改它插入数据的数据库(如 test_db)。设置它可能需要一段时间。并且为了确保这个数据库可以永远使用,您应该在测试结束时删除所有数据。 JUnit4 有注释,让你很容易。对正确的方法使用@Before、@After @Test 注释。你需要花一些时间在上面,但这是值得的!
mvn clean install -Dmaven.test.skip=true
为我工作,因为 -Dskip
不再工作。
mvn package -Dmaven.test.skip=true
最好和最简单的方法是在 IntelliJ Idea 中的“Maven Project”窗口中,并且不要单击测试按钮。我希望,我帮助了你。祝你有美好的一天 :)
-DskipTests
来做,但它不再起作用了,知道为什么吗?skipTests
优于设置maven.test.skip
。