Java Maven:surefire插件忽略-Dgroups when<;团体>;已配置

Java Maven:surefire插件忽略-Dgroups when<;团体>;已配置,java,maven,junit,surefire,Java,Maven,Junit,Surefire,我的项目有一些我很少想运行的JUnit测试。为此,我将它们放入@类别,然后我这样做: <plugin> <artifactId>maven-surefire-plugin</artifactId> <!-- Run all but the inject tests --> <configuration> <groups>!be.test.InjectTests</groups>

我的项目有一些我很少想运行的
JUnit
测试。为此,我将它们放入
@类别
,然后我这样做:

<plugin>
   <artifactId>maven-surefire-plugin</artifactId>
   <!-- Run all but the inject tests -->
   <configuration>
      <groups>!be.test.InjectTests</groups>
   </configuration>
</plugin>
但是这不起作用,-dGroup被Maven忽略了


如果我不使用该命令,该命令就可以正常工作。

不幸的是,如果在pom中设置了某些内容,那么它就不容易被重写(如果显式地设置了
skipTests
,那么也很难用属性重写)。。。但是(这有点像黑客)您可以将属性的设置推迟到pom属性,然后在命令行上覆盖它

<project>
...
<properties>
    <groups>!Slow</groups>
<properties>
....
<build>
    <plugins>
        ...
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.13</version>
           <configuration>
            <groups>${groups}</groups>
           </configuration>
        </plugin>
    </plugins>
</build>
...

我刚试过这个,但它实际上不起作用:|不知道为什么。在debug中运行mvn时,我可以看到
被分配给我在命令行上传递的任何内容,但是相关的
@Tag
测试仍然被忽略并且没有执行
<project>
...
<properties>
    <groups>!Slow</groups>
<properties>
....
<build>
    <plugins>
        ...
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.13</version>
           <configuration>
            <groups>${groups}</groups>
           </configuration>
        </plugin>
    </plugins>
</build>
...
$ mvn clean test
...
Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
...
$ mvn clean test -Dgroups=Slow
...
Results :

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0