Maven跳过测试
我使用的是Maven 2.2.1,为了构建我的项目,我使用了以下命令Maven跳过测试,maven,Maven,我使用的是Maven 2.2.1,为了构建我的项目,我使用了以下命令 mvn clean install -Dmaven.test.skip=true 然而,构建失败了,因为它找不到一个工件。然而,当我使用: mvn clean install -DskipTests 一切都很顺利 到目前为止,我一直认为这两个命令是等效的。然而,似乎表明-Dmaven.test.skip=true也会跳过编译测试用例 然而,这仍然不能向我解释为什么一个命令有效,而另一个命令无效。如果有人能向我解释这一点,我
mvn clean install -Dmaven.test.skip=true
然而,构建失败了,因为它找不到一个工件。然而,当我使用:
mvn clean install -DskipTests
一切都很顺利
到目前为止,我一直认为这两个命令是等效的。然而,似乎表明-Dmaven.test.skip=true
也会跳过编译测试用例
然而,这仍然不能向我解释为什么一个命令有效,而另一个命令无效。如果有人能向我解释这一点,我将不胜感激。我可以给你一个例子,说明同样的问题,但它可能无法回答你的问题。(此外,在本例中,我使用的是我的Maven 3知识,这可能不适用于Maven 2。) 在多模块maven项目中(包含模块
a
和B
,其中B
依赖于a
),您还可以从B
添加对a
的测试依赖项
此依赖关系可能如下所示:
<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>
com.foo
)
请注意,项目A
使用测试类和测试资源所在的分类器tests
生成二级工件
如果使用-Dmaven.test.skip=true
构建项目,只要在本地repo或外部存储库中未找到测试工件,就会出现依赖项解析错误。原因是既没有编译测试类,也没有生成tests
工件。
但是,如果使用-DskipTests
运行构建,将生成测试工件(尽管测试不会运行),并且相关性将得到解决。如您所述,-Dmaven.test.skip=true
跳过编译测试。更重要的是,它跳过了构建测试工件。大型项目的一种常见做法是在同一项目中的模块之间共享测试实用程序和基类
这是通过让一个模块需要一个先前构建的模块的测试jar
来实现的:
<dependency>
<groupId>org.myproject.mygroup</groupId>
<artifactId>common</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
org.myproject.mygroup
常见的
1
试验罐
测试
如果指定了-Dmaven.test.skip=true
(或者简单地说是-Dmaven.test.skip
),则不会生成测试jar,任何依赖它们的模块都将无法生成
相反,当您使用-DskipTests
时,Maven不会运行测试,但它会编译测试并构建测试jar,使其可用于后续模块。为了构建包,我与测试有一些相互依赖关系
以下命令用于覆盖对测试工件的需求,以完成目标:
mvn -DskipTests=true package
在maven编译期间,您可以通过在pom.xml中添加以下插件来跳过测试执行
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
org.apache.maven.plugins
maven surefire插件
2.20.1
真的
要在maven clean安装期间跳过测试用例,我在下面的命令中使用了-DskipTests参数
mvn clean install -DskipTests
进入终端窗口参数-DskipTests可能无法工作,具体取决于您的surefire插件版本
您可以使用“-Dmaven.test.skip.exec”代替“-DskipTests”
来源:每个参数之间都有差异
-DskipTests
跳过运行测试阶段,这意味着在此过程结束时,您将编译测试
-Dmaven.test.skip=true
跳过编译和运行测试阶段
作为参数-Dmaven.test.skip=true
跳过编译,您没有测试工件
有关更多信息,请阅读surfire文档:我有另一种针对Intellij用户的方法,它对我非常有用:
点击“跳过测试”按钮
按住“CTRL”按钮
选择“清洁”和“安装”
单击maven窗格中的“运行”按钮
您使用的maven surefire插件版本是什么?它与您正在阅读的文档版本相同吗?一个跳过构建,另一个跳过运行。如果你想两者都使用。你能提供失败的详细信息吗?错误消息或stacktrace?为什么你使用的是这样一个旧的Maven版本。那么,要完全跳过所有与测试相关的内容,我必须使用-Dmaven.test.skip=true-DskipTests
?根据具体情况,有时可以省略其中一个,但谁愿意考虑这个问题1.如何解决这个问题?我的在线maven命令使用-Dmaven.test.skip.@neptune有什么问题?如果您有新问题,请使用新帖子提问。即使您执行mvn测试
“安装”阶段包括“测试”,它也会跳过测试,因此这种方法不会排除测试。@EduardStreltsov当您单击“跳过测试”按钮时,您会发现“测试”步骤被排除在“关于跳过测试”按钮之外,我的错。检查,它工作