Maven 跳过测试

标签 maven

我正在使用 Maven 2.2.1 并使用此命令来构建我的项目

mvn clean install -Dmaven.test.skip=true

但是,构建失败,表示找不到其中一个 Artifact 。但是,当我使用时:

mvn clean install -DskipTests

一切顺利。

到目前为止,我一直认为这两个命令是等效的。然而,this link似乎表明 -Dmaven.test.skip=true 也会跳过编译测试用例。

但是,这仍然没有向我解释为什么一个命令有效而另一个命令无效。如果有人向我解释一下,我将不胜感激。

最佳答案

正如您所指出的,-Dmaven.test.skip=true 会跳过编译测试。更重要的是,它跳过了构建测试 Artifact 。大型项目的常见做法是在同一项目的模块之间共享测试实用程序和基类。

这是通过让模块需要先前构建的模块的 test-jar 来实现的:

<dependency>
  <groupId>org.myproject.mygroup</groupId>
  <artifactId>common</artifactId>
  <version>1.0</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>

如果指定-Dmaven.test.skip=true(或简单地-Dmaven.test.skip),则test-jar未构建,任何依赖它们的模块都将构建失败。

相反,当您使用-DskipTests时,Maven不会运行测试,但它会编译它们并构建测试jar,使其可用于后续模块。

关于Maven 跳过测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24727536/

相关文章:

java - Eclipse (STS) 试图创建 appfuse-basic-jsf :RELEASE fails

java - 如何解决maven中的java.lang.reflect.InitationTargetException

maven - 使用 PowerMock 和 easymock、Surefire 没有为 Maven 项目运行所有 jUnit 测试用例

java - Jetty maven插件和spring 4.1.6 - 类未找到异常

java - Mybatis(iBatis) XML映射配置

java - Jenkins maven无法在JDK中找到Javac编译器

java - JBehave-Maven-Plugin,类路径中错误的 cdi-api 依赖项

maven - 将 IntelliJ IDEA 与使用 "generate-sources"或 "process-classes"生命周期阶段的 Maven 项目一起使用

java - 如何在运行时将目录添加到 war?

java - 使用 Spring MVC 应用程序(没有 web.xml)部署的简单 HelloWorld 给出 404 错误