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项目(包含模块A
和B
,其中B
依赖于A
)中,还可以从B
添加对A
的testing依赖项 。
这种依赖关系可能如下所示:
<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不会运行),并且依赖性将得到解决。