我正在尝试打包我的项目。但是,它会自动运行以前执行打包的测试。测试将一些内容插入数据库。这不是我想要的,我需要避免在打包应用程序时运行测试。有人知道如何在没有测试的情况下运行软件包吗?
我正在尝试打包我的项目。但是,它会自动运行以前执行打包的测试。测试将一些内容插入数据库。这不是我想要的,我需要避免在打包应用程序时运行测试。有人知道如何在没有测试的情况下运行软件包吗?
Answers:
与运行Maven
mvn package -Dmaven.test.skip=true
-DskipTests
但是现在不起作用了,为什么?
只需提供以下提到的命令即可忽略执行测试用例,
mvn package -DskipTests
-DskipTests
我使用时对我不起作用mvn clean install -DskipTests
-DskipTests
与-Dmaven.test.skip.exec=true
stackoverflow.com/a/21933970/32453相同,是的,它确实编译了测试并且没有运行它们(而-Dmaven.test.skip=true
没有编译它们)
如果您不想设置命令行arg,则可以将此插件配置添加到pom中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
请注意,-Dmaven.test.skip阻止Maven构建测试罐工件。
如果您想跳过测试,但按照常规构建创建工件,请使用:
-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
参考:http : //kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/
您可以在任一命令中添加-DskipTests
或跳过测试。您的情况如下所示:-Dmaven.test.skip=true
mvn
mvn package -DskipTests
要么
mvn package -Dmaven.test.skip=true
测试应始终在打包之前运行[1]。如果您需要关闭测试,则说明您做错了。换句话说,您正在尝试解决错误的问题。找出您的真正问题所在,然后提出该问题。听起来好像与数据库有关。
[1]当需要快速生成供本地开发使用的工件时,您可以跳过测试,但是通常,创建工件应始终遵循成功的测试运行。
进行Maven构建和跳过测试的简写形式为:
mvn全新安装-DskipTests
显然,您做错了方法。测试是预包装的重要组成部分。您不应忽略或跳过它,而应以正确的方式来做。尝试更改要向其插入数据的数据库(例如test_db)。可能需要一段时间才能进行设置。为了确保可以永久使用该数据库,您应该在测试结束之前删除所有数据。JUnit4具有批注,使您轻松自如。为正确的方法使用@ Before,@ After @Test批注。您需要花一些时间,但这是值得的!
在Intellij中,转到“视图”->“工具窗口”->“选择Maven项目”。在Lifecyle下拉菜单上,右键单击package->选择Create'your-project [package]'...
package -Dmaven.test.skip=true -f pom.xml
在命令行字段中输入以下值:单击“应用”,“运行配置”下拉菜单应与您创建的自定义maven命令一起出现。