运行两次的Maven Config插件

时间:2017-05-31 18:31:29

标签: maven pmd cobertura phase

我有以下pom配置。我添加了cobertura插件,现在pmd,cpd,findbugs和test都运行了两次。

我理解这是因为我的“阶段”配置,但我不明白我怎样才能实现以下目标:

我想要的是在我提交回购,构建我的应用程序并检查pmd错误,查找错误,检查我的测试以及检查我的cobertura之前。

我怎样才能做到这一点?我习惯在运行之前运行“mvn clean package”。那可以吗?

这是我的配置:

...
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.8</version>
        <configuration>
            <linkXref>false</linkXref>
            <rulesets>
                <!-- Custom Ruleset -->
                <ruleset>codequality/pmd.xml</ruleset>
            </rulesets>
        </configuration>
        <executions>
            <execution>
                <phase>compile</phase>
                <goals>
                    <goal>pmd</goal>
                    <goal>cpd</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>3.0.4</version>
        <executions>
            <execution>
                <phase>compile</phase>
                <goals>
                    <goal>check</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.7</version>
        <configuration>
            <check>
                <haltOnFailure>true</haltOnFailure>
                <branchRate>70</branchRate>
                <lineRate>70</lineRate>
                <totalBranchRate>70</totalBranchRate>
                <totalLineRate>70</totalLineRate>
                <packageLineRate>70</packageLineRate>
                <packageBranchRate>70</packageBranchRate>
            </check>
        </configuration>
        <executions>
            <execution>
                <phase>compile</phase>
                <goals>
                    <goal>clean</goal>
                    <goal>check</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>
</build>

1 个答案:

答案 0 :(得分:0)

任何maven插件都有默认的执行阶段。在这种情况下,您应用的插件将在验证阶段(pmd-plugin)中执行。但是你定义它也可以在编译阶段运行。删除阶段标记并让它在验证阶段运行。

<execution>
   <!--<phase>compile</phase>-->
   <goals>
       <goal>...</goal>
       ...
   </goals>
</execution>

最后,在提交之前验证项目的良好做法是:

mvn clean verify