我正在使用 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/