Maven跳过testing

我正在使用Maven 2.2.1并构build我的项目,我使用了这个命令

mvn clean install -Dmaven.test.skip=true 

然而,构build失败,说它找不到一个神器。 但是,当我使用:

 mvn clean install -DskipTests 

一切正常。

到目前为止,我一直认为这两个命令是等价的。 但是, 这个链接似乎表明-Dmaven.test.skip=true也会跳过编译testing用例。

但是,这仍然没有向我解释为什么一个命令工作,另一个不是。 如果有人请向我解释这个,会很感激。

如您所述, -Dmaven.test.skip=true跳过编译testing。 更重要的是,它跳过构buildtesting工件。 大型项目的一个常见做法是在同一个项目中的模块之间共享testing实用程序和基类。

这是通过让一个模块需要一个先前构build的模块的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 ),则不会构buildtest-jar ,任何依赖它们的模块都将失败它的构build。

我有一些相互依赖的testing,以build立包。 所以下面的命令设法覆盖testing工件的需求以完成目标

 mvn -DskipTests=true package 

我可以给你一个同样的问题的例子,但它可能不会给你一个答案你的问题。 (另外,在这个例子中,我使用了我的Maven 3知识,这可能不适用于Maven 2)

在一个多模块maven项目(包含模块AB ,其中B依赖于A )中,还可以从B添加对Atesting依赖项

这种依赖关系可能如下所示:

 <dependency> <groupId>com.foo</groupId> <artifactId>A</artifactId> <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 2. --> <scope>test</scope> </dependency> 

(有关更多信息,请参阅https://maven.apache.org/guides/mini/guide-attached-tests.html
请注意,项目A使用分类器生成次级项目,testingtesting类和testing资源的位置。

如果使用-Dmaven.test.skip=true构build项目,只要在本地回购或外部存储库中找不到testing工件 ,就会得到依赖性解决错误。 原因是testing类既没有编译,也没有产生tests工件。
但是,如果使用-DskipTests运行构build, -DskipTests tests工件(尽pipetesting不会运行),并且依赖性将得到解决。