未经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不工作了。