Jacoco在Kotlin和Java的Maven项目中无法从Kotlin测试中找到Kotlin文件的覆盖率。

huangapple 未分类评论50阅读模式
英文:

Jacoco doesn't find Kotlin files coverage in Kotlin and Java maven project from kotlin's tests

问题

我有一个项目,其中包含Kotlin和Java源代码文件夹,以及Kotlin和Java测试源代码文件夹。但是当我尝试检查覆盖率时,JaCoCo无法找到Kotlin类的覆盖率信息。

@Godin,我尝试使用您在类似问题的回答中提到的build-helper-maven-plugin来添加更多的源代码/测试目录,但结果仍然是相同的错误消息:"违反规则,KotlinExample类的覆盖率比例为0.0..."。

更新:只有在我从Java测试中覆盖Kotlin类时,覆盖率才能正常工作。但是从Kotlin的测试中覆盖却无效。

非常感谢任何帮助。

我的pom文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
    <!-- 其他属性和依赖 -->

    <build>
        <!-- 其他插件配置 -->

        <plugins>
            <!-- 其他插件配置 -->

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <configuration>
                    <!-- 其他配置 -->

                    <executions>
                        <execution>
                            <id>pre-unit-test</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                            <configuration>
                                <destFile>${basedir}/target/coverage-reports/jacoco-ut.exec</destFile>
                            </configuration>
                        </execution>
                        <execution>
                            <id>post-unit-test</id>
                            <phase>test</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                            <configuration>
                                <dataFile>${basedir}/target/coverage-reports/jacoco-ut.exec</dataFile>
                                <outputDirectory>${basedir}/target/jacoco-ut-report</outputDirectory>
                            </configuration>
                        </execution>
                        <execution>
                            <id>check</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                            <configuration>
                                <dataFile>${basedir}/target/coverage-reports/jacoco-ut.exec</dataFile>
                                <rules>
                                    <rule>
                                        <element>CLASS</element>
                                        <limits>
                                            <limit>
                                                <counter>LINE</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>0.8</minimum>
                                            </limit>
                                            <limit>
                                                <counter>BRANCH</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>0.8</minimum>
                                            </limit>
                                        </limits>
                                    </rule>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
英文:

I have project with Kotlin and Java source folders and Kotlin and Java test source folders. But when I try to check coverage, Jacoco can't find coverage for Kotlin classes.

@Godin I tryed to apply build-helper-maven-plugin from your answer answer on similar problem for adding more source/test directories, but result is the same "rule violated for KotlinExample class lines covered is ratio 0.0..."

UPDATE Coverage only works if I cover Kotlin classes from Java tests. But from Kotlin’s tests this doesn’t work.

Higly appreciate any help.

My pom is

&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

&lt;properties&gt;
    &lt;main.version&gt;0.0.1-SNAPSHOT&lt;/main.version&gt;
    &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
    &lt;jdk.version&gt;1.8&lt;/jdk.version&gt;
    &lt;kotlin.version&gt;1.3.72&lt;/kotlin.version&gt;
    &lt;kotlin.compiler.incremental&gt;true&lt;/kotlin.compiler.incremental&gt;
    &lt;jacoco.version&gt;0.8.3&lt;/jacoco.version&gt;
    &lt;sonar.inclusions&gt;src/main/**&lt;/sonar.inclusions&gt;
    &lt;sonar.exclusion.001&gt;**/dto/**&lt;/sonar.exclusion.001&gt;
    &lt;sonar.exclusion.002&gt;**/stub/**&lt;/sonar.exclusion.002&gt;
    &lt;sonar.skip&gt;true&lt;/sonar.skip&gt;
&lt;/properties&gt;

&lt;dependencies&gt;
&lt;/dependencies&gt;

&lt;build&gt;
    &lt;resources&gt;
        &lt;resource&gt;
            &lt;directory&gt;src/main/resources&lt;/directory&gt;
            &lt;filtering&gt;true&lt;/filtering&gt;
            &lt;includes&gt;
                &lt;include&gt;*&lt;/include&gt;
            &lt;/includes&gt;
        &lt;/resource&gt;
    &lt;/resources&gt;
        &lt;plugin&gt;
            &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
            &lt;version&gt;3.2.3&lt;/version&gt;
            &lt;configuration&gt;
                &lt;archive&gt;
                    &lt;manifest&gt;
                        &lt;addClasspath&gt;true&lt;/addClasspath&gt;
                    &lt;/manifest&gt;
                    &lt;manifestEntries&gt;
                    &lt;/manifestEntries&gt;
                &lt;/archive&gt;
                &lt;webResources&gt;
                    &lt;resource&gt;
                        &lt;directory&gt;src/main/resources&lt;/directory&gt;
                        &lt;targetPath&gt;WEB-INF/classes&lt;/targetPath&gt;
                        &lt;excludes&gt;
                            &lt;exclude&gt;env.properties&lt;/exclude&gt;
                        &lt;/excludes&gt;
                    &lt;/resource&gt;
                &lt;/webResources&gt;
            &lt;/configuration&gt;
        &lt;/plugin&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.jetbrains.kotlin&lt;/groupId&gt;
            &lt;artifactId&gt;kotlin-maven-plugin&lt;/artifactId&gt;
            &lt;version&gt;${kotlin.version}&lt;/version&gt;
            &lt;configuration&gt;
                &lt;jvmTarget&gt;${jdk.version}&lt;/jvmTarget&gt;
                &lt;compilerPlugins&gt;
                    &lt;plugin&gt;spring&lt;/plugin&gt;
                &lt;/compilerPlugins&gt;
            &lt;/configuration&gt;
            &lt;executions&gt;
                &lt;execution&gt;
                    &lt;id&gt;compile&lt;/id&gt;
                    &lt;phase&gt;compile&lt;/phase&gt;
                   &lt;goals&gt;
                        &lt;goal&gt;compile&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;sourceDirs&gt;
                            &lt;sourceDir&gt;${project.basedir}/src/main/kotlin&lt;/sourceDir&gt;
                            &lt;sourceDir&gt;${project.basedir}/src/main/java&lt;/sourceDir&gt;
                        &lt;/sourceDirs&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;test-compile&lt;/id&gt;
                    &lt;phase&gt;test-compile&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;test-compile&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;sourceDirs&gt;
                            &lt;sourceDir&gt;${basedir}/src/test/kotlin&lt;/sourceDir&gt;
                            &lt;sourceDir&gt;${basedir}/src/test/java&lt;/sourceDir&gt;
                        &lt;/sourceDirs&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
            &lt;/executions&gt;
            &lt;dependencies&gt;
                &lt;dependency&gt;
                    &lt;groupId&gt;org.jetbrains.kotlin&lt;/groupId&gt;
                    &lt;artifactId&gt;kotlin-maven-allopen&lt;/artifactId&gt;
                    &lt;version&gt;${kotlin.version}&lt;/version&gt;
                &lt;/dependency&gt;
            &lt;/dependencies&gt;
        &lt;/plugin&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
            &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
            &lt;executions&gt;
                &lt;execution&gt;
                    &lt;id&gt;default-compile&lt;/id&gt;
                    &lt;phase&gt;none&lt;/phase&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;default-testCompile&lt;/id&gt;
                    &lt;phase&gt;none&lt;/phase&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;java-compile&lt;/id&gt;
                    &lt;phase&gt;compile&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;compile&lt;/goal&gt;
                    &lt;/goals&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;java-testCompile&lt;/id&gt;
                    &lt;phase&gt;test-compile&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;testCompile&lt;/goal&gt;
                    &lt;/goals&gt;
                &lt;/execution&gt;
            &lt;/executions&gt;
            &lt;configuration&gt;
                &lt;source&gt;8&lt;/source&gt;
                &lt;target&gt;8&lt;/target&gt;
            &lt;/configuration&gt;
        &lt;/plugin&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.jacoco&lt;/groupId&gt;
            &lt;artifactId&gt;jacoco-maven-plugin&lt;/artifactId&gt;
            &lt;configuration&gt;
                &lt;excludes&gt;
                    &lt;exclude&gt;${sonar.exclusion.001}&lt;/exclude&gt;
                    &lt;exclude&gt;${sonar.exclusion.002}&lt;/exclude&gt;
                &lt;/excludes&gt;
            &lt;/configuration&gt;
            &lt;executions&gt;
                &lt;execution&gt;
                    &lt;id&gt;pre-unit-test&lt;/id&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;prepare-agent&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;destFile&gt;${basedir}/target/coverage-reports/jacoco-ut.exec&lt;/destFile&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;post-unit-test&lt;/id&gt;
                    &lt;phase&gt;test&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;report&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;dataFile&gt;${basedir}/target/coverage-reports/jacoco-ut.exec&lt;/dataFile&gt;
                        &lt;outputDirectory&gt;${basedir}/target/jacoco-ut-report&lt;/outputDirectory&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;check&lt;/id&gt;
                    &lt;phase&gt;verify&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;check&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;dataFile&gt;${basedir}/target/coverage-reports/jacoco-ut.exec&lt;/dataFile&gt;
                        &lt;rules&gt;
                            &lt;rule&gt;
                                &lt;element&gt;CLASS&lt;/element&gt;
                                &lt;limits&gt;
                                    &lt;limit&gt;
                                        &lt;counter&gt;LINE&lt;/counter&gt;
                                        &lt;value&gt;COVEREDRATIO&lt;/value&gt;
                                        &lt;minimum&gt;0.8&lt;/minimum&gt;
                                    &lt;/limit&gt;
                                    &lt;limit&gt;
                                        &lt;counter&gt;BRANCH&lt;/counter&gt;
                                        &lt;value&gt;COVEREDRATIO&lt;/value&gt;
                                        &lt;minimum&gt;0.8&lt;/minimum&gt;
                                    &lt;/limit&gt;
                                &lt;/limits&gt;
                            &lt;/rule&gt;
                        &lt;/rules&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
            &lt;/executions&gt;
        &lt;/plugin&gt;
    &lt;/plugins&gt;

</build>

</project>

答案1

得分: -1

如果您正在使用0.8.3版本或类似版本的jacoco-maven-plugin,请确保已定义数据文件,并使用以下配置插件的方法:

<execution>
  <id>jacoco-check</id>
  <goals>
    <goal>check</goal>
  </goals>
  <configuration>
    <dataFile>${project.build.directory}/coverage-reports/jacoco.exec</dataFile>
    <rules>
      <rule>
        <element>BUNDLE</element>
        <limits>
          <limit>
            <counter>INSTRUCTION</counter>
            <value>COVEREDRATIO</value>
            <minimum>0.17</minimum>
          </limit>
        </limits>
      </rule>
    </rules>
  </configuration>
</execution>

此代码确保总体覆盖率达到17%。

请使用以下命令验证:

mvn clean verify

同时,将以下内容添加到配置清单中:

<configuration>
  <excludes>
    <exclude>META-INF/**</exclude>
  </excludes>
</configuration>
英文:

If you are using 0.8.3 or similar versions of jacoco-maven-plugin, please make sure data file is defined, and use the following configuration for the plugin.

&lt;execution&gt;
  &lt;id&gt;jacoco-check&lt;/id&gt;
  &lt;goals&gt;
    &lt;goal&gt;check&lt;/goal&gt;
  &lt;/goals&gt;
  &lt;configuration&gt;
    &lt;dataFile&gt;${project.build.directory}/coverage-reports/jacoco.exec&lt;/dataFile&gt;
    &lt;rules&gt;
      &lt;rule&gt;
        &lt;element&gt;BUNDLE&lt;/element&gt;
        &lt;limits&gt;
          &lt;limit&gt;
            &lt;counter&gt;INSTRUCTION&lt;/counter&gt;
            &lt;value&gt;COVEREDRATIO&lt;/value&gt;
            &lt;minimum&gt;0.17&lt;/minimum&gt;
          &lt;/limit&gt;
        &lt;/limits&gt;
      &lt;/rule&gt;
    &lt;/rules&gt;
  &lt;/configuration&gt;
&lt;/execution&gt;

This code ensures overall coverage of 17%.

Please verify this using

mvn clean verify

command.
And add this for the config manifest

&lt;configuration&gt;
	  &lt;excludes&gt;
		&lt;exclude&gt;META-INF/**&lt;/exclude&gt;
	  &lt;/excludes&gt;
&lt;/configuration&gt;

答案2

得分: -1

请查看以下翻译内容:

<modelVersion>4.0.0</modelVersion>

<properties>
    <main.version>0.0.1-SNAPSHOT</main.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jdk.version>1.8</jdk.version>
    <kotlin.version>1.3.72</kotlin.version>
    <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
    <jacoco.version>0.8.3</jacoco.version>
    <sonar.inclusions>src/main/**</sonar.inclusions>
    <sonar.exclusion.001>**/dto/**</sonar.exclusion.001>
    <sonar.exclusion.002>**/stub/**</sonar.exclusion.002>
    <sonar.skip>true</sonar.skip>
</properties>

<dependencies>
</dependencies>

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>*</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.3</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                    </manifest>
                    <manifestEntries>
                    </manifestEntries>
                </archive>
                <webResources>
                    <resource>
                        <directory>src/main/resources</directory>
                        <targetPath>WEB-INF/classes</targetPath>
                        <excludes>
                            <exclude>env.properties</exclude>
                        </excludes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>
            <configuration>
                <jvmTarget>${jdk.version}</jvmTarget>
                <compilerPlugins>
                    <plugin>spring</plugin>
                </compilerPlugins>
            </configuration>
            <executions>
                <execution>
                    <id>compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                            <sourceDir>${project.basedir}/src/main/java</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>test-compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${basedir}/src/test/kotlin</sourceDir>
                            <sourceDir>${basedir}/src/test/java</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-allopen</artifactId>
                    <version>${kotlin.version}</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <executions>
                <execution>
                    <id>default-compile</id>
                    <phase>none</phase>
                </execution>
                <execution>
                    <id>default-testCompile</id>
                    <phase>none</phase>
                </execution>
                <execution>
                    <id>java-compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>java-testCompile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>${sonar.exclusion.001}</exclude>
                    <exclude>${sonar.exclusion.002}</exclude>
                </excludes>
            </configuration>
            <executions>
                <execution>
                    <id>pre-unit-test</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                    <configuration>
                        <destFile>${basedir}/target/coverage-reports/jacoco-ut.exec</destFile>
                    </configuration>
                </execution>
                <execution>
                    <id>post-unit-test</id>
                    <phase>test</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                    <configuration>
                        <dataFile>${basedir}/target/coverage-reports/jacoco-ut.exec</dataFile>
                        <outputDirectory>${basedir}/target/jacoco-ut-report</outputDirectory>
                    </configuration>
                </execution>
                <execution>
                    <id>check</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>check</goal>
                    </goals>
                    <configuration>
                        <dataFile>${basedir}/target/coverage-reports/jacoco-ut.exec</dataFile>
                        <rules>
                            <rule>
                                <element>CLASS</element>
                                <limits>
                                    <limit>
                                        <counter>LINE</counter>
                                        <value>COVEREDRATIO</value>
                                        <minimum>0.4</minimum>
                                    </limit>
                                    <limit>
                                        <counter>BRANCH</counter>
                                        <value>COVEREDRATIO</value>
                                        <minimum>0.4</minimum>
                                    </limit>
                                </limits>
                            </rule>
                        </rules>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

请注意,我只返回了代码的翻译部分,没有添加其他内容。如果有任何问题或需要进一步帮助,请随时问我。

英文:

try that :

&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

&lt;properties&gt;
    &lt;main.version&gt;0.0.1-SNAPSHOT&lt;/main.version&gt;
    &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
    &lt;jdk.version&gt;1.8&lt;/jdk.version&gt;
    &lt;kotlin.version&gt;1.3.72&lt;/kotlin.version&gt;
    &lt;kotlin.compiler.incremental&gt;true&lt;/kotlin.compiler.incremental&gt;
    &lt;jacoco.version&gt;0.8.3&lt;/jacoco.version&gt;
    &lt;sonar.inclusions&gt;src/main/**&lt;/sonar.inclusions&gt;
    &lt;sonar.exclusion.001&gt;**/dto/**&lt;/sonar.exclusion.001&gt;
    &lt;sonar.exclusion.002&gt;**/stub/**&lt;/sonar.exclusion.002&gt;
    &lt;sonar.skip&gt;true&lt;/sonar.skip&gt;
&lt;/properties&gt;

&lt;dependencies&gt;
&lt;/dependencies&gt;

&lt;build&gt;
    &lt;resources&gt;
        &lt;resource&gt;
            &lt;directory&gt;src/main/resources&lt;/directory&gt;
            &lt;filtering&gt;true&lt;/filtering&gt;
            &lt;includes&gt;
                &lt;include&gt;*&lt;/include&gt;
            &lt;/includes&gt;
        &lt;/resource&gt;
    &lt;/resources&gt;
        &lt;plugin&gt;
            &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
            &lt;version&gt;3.2.3&lt;/version&gt;
            &lt;configuration&gt;
                &lt;archive&gt;
                    &lt;manifest&gt;
                        &lt;addClasspath&gt;true&lt;/addClasspath&gt;
                    &lt;/manifest&gt;
                    &lt;manifestEntries&gt;
                    &lt;/manifestEntries&gt;
                &lt;/archive&gt;
                &lt;webResources&gt;
                    &lt;resource&gt;
                        &lt;directory&gt;src/main/resources&lt;/directory&gt;
                        &lt;targetPath&gt;WEB-INF/classes&lt;/targetPath&gt;
                        &lt;excludes&gt;
                            &lt;exclude&gt;env.properties&lt;/exclude&gt;
                        &lt;/excludes&gt;
                    &lt;/resource&gt;
                &lt;/webResources&gt;
            &lt;/configuration&gt;
        &lt;/plugin&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.jetbrains.kotlin&lt;/groupId&gt;
            &lt;artifactId&gt;kotlin-maven-plugin&lt;/artifactId&gt;
            &lt;version&gt;${kotlin.version}&lt;/version&gt;
            &lt;configuration&gt;
                &lt;jvmTarget&gt;${jdk.version}&lt;/jvmTarget&gt;
                &lt;compilerPlugins&gt;
                    &lt;plugin&gt;spring&lt;/plugin&gt;
                &lt;/compilerPlugins&gt;
            &lt;/configuration&gt;
            &lt;executions&gt;
                &lt;execution&gt;
                    &lt;id&gt;compile&lt;/id&gt;
                    &lt;phase&gt;compile&lt;/phase&gt;
                   &lt;goals&gt;
                        &lt;goal&gt;compile&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;sourceDirs&gt;
                            &lt;sourceDir&gt;${project.basedir}/src/main/kotlin&lt;/sourceDir&gt;
                            &lt;sourceDir&gt;${project.basedir}/src/main/java&lt;/sourceDir&gt;
                        &lt;/sourceDirs&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;test-compile&lt;/id&gt;
                    &lt;phase&gt;test-compile&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;test-compile&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;sourceDirs&gt;
                            &lt;sourceDir&gt;${basedir}/src/test/kotlin&lt;/sourceDir&gt;
                            &lt;sourceDir&gt;${basedir}/src/test/java&lt;/sourceDir&gt;
                        &lt;/sourceDirs&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
            &lt;/executions&gt;
            &lt;dependencies&gt;
                &lt;dependency&gt;
                    &lt;groupId&gt;org.jetbrains.kotlin&lt;/groupId&gt;
                    &lt;artifactId&gt;kotlin-maven-allopen&lt;/artifactId&gt;
                    &lt;version&gt;${kotlin.version}&lt;/version&gt;
                &lt;/dependency&gt;
            &lt;/dependencies&gt;
        &lt;/plugin&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
            &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
            &lt;executions&gt;
                &lt;execution&gt;
                    &lt;id&gt;default-compile&lt;/id&gt;
                    &lt;phase&gt;none&lt;/phase&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;default-testCompile&lt;/id&gt;
                    &lt;phase&gt;none&lt;/phase&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;java-compile&lt;/id&gt;
                    &lt;phase&gt;compile&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;compile&lt;/goal&gt;
                    &lt;/goals&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;java-testCompile&lt;/id&gt;
                    &lt;phase&gt;test-compile&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;testCompile&lt;/goal&gt;
                    &lt;/goals&gt;
                &lt;/execution&gt;
            &lt;/executions&gt;
            &lt;configuration&gt;
                &lt;source&gt;8&lt;/source&gt;
                &lt;target&gt;8&lt;/target&gt;
            &lt;/configuration&gt;
        &lt;/plugin&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.jacoco&lt;/groupId&gt;
            &lt;artifactId&gt;jacoco-maven-plugin&lt;/artifactId&gt;
            &lt;configuration&gt;
                &lt;excludes&gt;
                    &lt;exclude&gt;${sonar.exclusion.001}&lt;/exclude&gt;
                    &lt;exclude&gt;${sonar.exclusion.002}&lt;/exclude&gt;
                &lt;/excludes&gt;
            &lt;/configuration&gt;
            &lt;executions&gt;
                &lt;execution&gt;
                    &lt;id&gt;pre-unit-test&lt;/id&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;prepare-agent&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;destFile&gt;${basedir}/target/coverage-reports/jacoco-ut.exec&lt;/destFile&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;post-unit-test&lt;/id&gt;
                    &lt;phase&gt;test&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;report&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;dataFile&gt;${basedir}/target/coverage-reports/jacoco-ut.exec&lt;/dataFile&gt;
                        &lt;outputDirectory&gt;${basedir}/target/jacoco-ut-report&lt;/outputDirectory&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
                &lt;execution&gt;
                    &lt;id&gt;check&lt;/id&gt;
                    &lt;phase&gt;verify&lt;/phase&gt;
                    &lt;goals&gt;
                        &lt;goal&gt;check&lt;/goal&gt;
                    &lt;/goals&gt;
                    &lt;configuration&gt;
                        &lt;dataFile&gt;${basedir}/target/coverage-reports/jacoco-ut.exec&lt;/dataFile&gt;
                        &lt;rules&gt;
                            &lt;rule&gt;
                                &lt;element&gt;CLASS&lt;/element&gt;
                                &lt;limits&gt;
                                    &lt;limit&gt;
                                        &lt;counter&gt;LINE&lt;/counter&gt;
                                        &lt;value&gt;COVEREDRATIO&lt;/value&gt;
                                        &lt;minimum&gt;0.4&lt;/minimum&gt;
                                    &lt;/limit&gt;
                                    &lt;limit&gt;
                                        &lt;counter&gt;BRANCH&lt;/counter&gt;
                                        &lt;value&gt;COVEREDRATIO&lt;/value&gt;
                                        &lt;minimum&gt;0.4&lt;/minimum&gt;
                                    &lt;/limit&gt;
                                &lt;/limits&gt;
                            &lt;/rule&gt;
                        &lt;/rules&gt;
                    &lt;/configuration&gt;
                &lt;/execution&gt;
            &lt;/executions&gt;
        &lt;/plugin&gt;
    &lt;/plugins&gt;

huangapple
  • 本文由 发表于 2020年5月19日 21:06:30
  • 转载请务必保留本文链接:https://java.coder-hub.com/61891797.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定