我使用Maven 2.2.1和构建我的项目,我使用这个命令
mvn clean install -Dmaven.test.skip=true
然而,构建失败了,它无法找到其中一个工件。然而,当我使用:
mvn clean install -DskipTests
一切都很顺利。
到目前为止,我一直认为这两个命令是等价的。然而,这个链接似乎表明-Dmaven.test. test。Skip =true也跳过编译测试用例。
然而,这仍然没有向我解释为什么一个命令是有效的,而另一个没有。如果有人能给我解释一下,我将不胜感激。
我可以给你一个同样问题的例子,但它可能不能给你问题的答案。(此外,在本例中,我使用的是我的Maven 3知识,这可能不适用于Maven 2。)
在多模块maven项目中(包含模块a和B,其中B依赖于a),您还可以在B中添加a的测试依赖项。
B中的依赖关系如下所示:
<dependency>
<groupId>com.foo</groupId>
<artifactId>A</artifactId>
<classifier>tests</classifier>
<type>test-jar</type> <!-- I'm not sure if there is such a thing in Maven 2, but there is definitely a way to achieve such dependency in Maven 3. -->
<scope>test</scope>
</dependency>
(更多信息请参考https://maven.apache.org/guides/mini/guide-attached-tests.html)
请注意,项目a通常会生成带有分类器测试的辅助工件(例如. .../com/foo/A/<版本>/ a -<版本>-tests.jar),其中包含测试类和测试资源。
如果您使用-Dmaven.test构建项目A。skip=true,在构建B时您将得到一个依赖项解析错误,除非在您的本地回购或远程存储库中找到a的测试工件。原因是既没有编译A的测试类,也没有生成A的测试工件。
但是,如果您使用-DskipTests构建A,则将生成其测试工件(尽管测试不会运行),并且B中的依赖项将成功解决。