未经testing的Maven包装(跳过testing)
我是Maven新手。 我正在打包我的项目。 但是,它会自动运行testing。 testing在数据库中插入一些内容。 这不是我想要的,我需要避免在打包应用程序时运行testing。 有人知道如何运行包testing?
用-Dmaven.test.skip=true
运行maven
只要提供下面提到的将忽略执行testing用例的命令,
mvn package -DskipTests
你可以添加这个插件configuration到你的pom中,如果你不想设置命令行参数:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
请注意,-Dmaven.test.skip可防止Maven构buildtestingjar工件。
如果您想跳过testing,但是按照正常的构build用法创build工件:
-Dmaven.test.skip.exec
您可以将maven.test.skip
标志作为JVMparameter passing,以便在包阶段(以及在默认生命周期中的先前阶段)运行时跳过运行testing:
mvn package -Dmaven.test.skip=true
您也可以将skipTests
标志单独传递给mvn可执行文件。 如果你想在POM中包含这些信息,你可以创build一个新的configuration文件,你可以configurationmaven-surefire-plugin
来跳过testing 。
如果您在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文件中添加的方法
你只需要提供
-Dmaven.test.skip
那里不再需要“=真”了。
在这里回答一个古老而被接受的问题。 如果你想避免一直传递命令行参数,你可以把它添加到你的pom.xml中:
<properties> <skipTests>true</skipTests> </properties>
testing应该总是[1]在包之前运行。 如果你需要closurestesting,你做错了什么。 换句话说,你正试图解决错误的问题。 找出你的问题真的是什么,并提出这个问题。 这听起来像是数据库相关的。
[1]当您需要为本地开发使用快速生成工件时,您可能会跳过testing,但通常,创build工件应始终遵循成功的testing运行。
显然,你做错了。 testing是预包装的重要组成部分。 你不应该忽略或者跳过它,而应该用正确的方式去做。 尝试更改插入数据的数据库(如test_db)。 安装它可能需要一些时间。 为了确保这个数据库可以永久使用,你应该在testing结束时删除所有的数据。 JUnit4有注释,使你更容易。 使用@Before,@After @Test注解为正确的方法。 你需要花点时间,但它是值得的!
mvn clean install -Dmaven.test.skip=true
为我工作,因为-Dskip
不工作了。