maven:如何通过命令行选项跳过某些项目的testing?

在我的maven项目中,我有一些模块。 是否可以通过命令行选项closures某些模块的运行unit testing?

我的项目需要大约15分钟才能完成所有的unit testing。 我想通过在我正在处理的模块中运行unit testing来加速整个构build。 我不想进入和编辑每个单独的pom.xml来实现这一点。

我试过这里概述的解决scheme: 我可以通过maven运行特定的testngtesting组吗? 但是,结果是我想跳过的模块中有很多testing失败。 我想'组'是不是同一个模块的概念?

要为整个项目打开和closuresunit testing,请使用Maven Surefire Plugin跳过testing的function 。 从命令行使用skipTests有一个缺点。 在多模块构build场景中,这将禁用所有模块的所有testing。

如果您需要对模块的一部分testing进行更细粒度的控制,请使用Maven Surefire插件的testing包含和排除function 。

要允许命令行覆盖,请在configurationSurefire插件时使用POM属性。 以下面的POM部分为例:

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.9</version> <configuration> <excludes> <exclude>${someModule.test.excludes}</exclude> </excludes> <includes> <include>${someModule.test.includes}</include> </includes> </configuration> </plugin> </plugins> </build> <properties> <someModule.skip.tests>false</someModule.skip.tests> <skipTests>${someModule.skip.tests}</skipTests> <someModule.test.includes>**/*Test.java</someModule.test.includes> <someModule.test.excludes>**/*Test.java.bogus</someModule.test.excludes> </properties> 

通过像上面这样的POM,您可以以各种方式执行testing。

  1. 运行所有testing(上述configuration包括所有** / * Test.javatesting源文件)
 mvn test 
  1. 跳过所有模块的所有testing
 mvn -DskipTests=true test 
  1. 跳过特定模块的所有testing
 mvn -DsomeModule.skip.tests=true test 
  1. 只对特定的模块运行某些testing(这个例子包括所有** / * IncludeTest.javatesting源文件)
 mvn -DsomeModule.test.includes="**/*IncludeTest.java" test 
  1. 排除特定模块的某些testing(本示例不包括所有** / * ExcludeTest.java源文件)
 mvn -DsomeModule.test.excludes="**/*ExcludeTest.java" test 

…如果你想在Hudson / Jenkins传递参数给Maven发布插件,你必须使用-Darguments=-DskipTests才能正常工作。

如果你想使用Mavenconfiguration文件:

你可能想要做这样的事情:

  • 在Maven的某些模块中跳过testing

我不知道是否有一个支持的命令行选项相同。

你也可以尝试直接使用环境属性,按照这个文档页面:

即像这样的东西:

  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> <configuration> <skipTests>${moduleA.skipTests}</skipTests> </configuration> </plugin> 

然后使用mvn -DmoduleA.skipTests=false test来testing这个模块。