运行 jacoco 使用 maven 3.5 检查目标

Running jacoco check goal with maven 3.5

我在 pom 中的 jacoco 插件配置如下所示

<plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.5.201505241946</version>
              <executions>
                <execution>
                  <id>pre-unit-test</id>
                  <goals>
                      <goal>prepare-agent</goal>
                  </goals>
                  <configuration>
                    <destFile>${jacoco.ut.execution.data.file}</destFile>
                  </configuration>
                </execution>
                <execution>
                  <id>merge-execs</id>
                  <phase>pre-site</phase>
                  <inherited>false</inherited>
                  <goals>
                      <goal>merge</goal>
                  </goals>
                  <configuration>
                   <fileSets>
                     <fileSet>
                       <directory>${basedir}</directory>
                       <includes>
                         <include>**/target/*.exec</include>
                       </includes>
                     </fileSet>
                   </fileSets>
                    <destFile>${jacoco.ut.merged.exec}</destFile>
                  </configuration>
                </execution>
                  <execution>
                      <id>jacoco-check</id>
                      <phase>verify</phase>
                      <goals>
                          <goal>check</goal>
                      </goals>
                      <configuration>
                          <rules>
                              <rule>
                                  <element>BUNDLE</element>
                                  <limits>
                                      <limit>
                                          <counter>LINE</counter>
                                          <value>COVEREDRATIO</value>
                                          <minimum>0.80</minimum>
                                      </limit>
                                  </limits>
                              </rule>
                          </rules>
                          <dataFile>${jacoco.ut.merged.exec}</dataFile>
                      </configuration>
                  </execution>
             </executions>
         </plugin>

但是当我 运行 mvn jacoco:check 它失败并出现以下错误

[ERROR] Failed to execute goal org.jacoco:jacoco-maven-plugin:0.7.5.201505241946:check (default-cli) on project main: The parameters 'rules' for goal org.jacoco:jacoco-maven-plugin:0.7.5.201505241946:check are missing or invalid -> [Help 1]

谁能告诉我出了什么问题?

您观察到的行为并非特定于 jacoco-maven-plugin,而是 Maven 的工作方式 - 请参阅 https://maven.apache.org/guides/mini/guide-default-execution-ids.html

mvn jacoco:check

使用执行 ID default-cli,而您的 pom.xml 定义执行中的配置,其中 ID jacoco-check 绑定到阶段 verify

所以要么使用这个阶段:

mvn verify

或在 executions 块之外(即在 <plugin><configuration> 中)提供配置,以便在所有执行中继承它。

或明确指定执行id jacoco-check:

mvn jacoco:check@jacoco-check