jacoco 与 AGP 4.0.1、gradle 6.+、jdk1.8 的工作方式类似,但在下面的升级 gradle 版本中找不到错误“JacocoTaskExtension”。
Gradle 7.0.2
------------------------------------------------------------
Build time: 2021-05-14 12:02:31 UTC
Revision: 1ef1b260d39daacbf9357f9d8594a8a743e2152e
Kotlin: 1.4.31
Groovy: 3.0.7
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 11.0.12 (Oracle Corporation 11.0.12+8-LTS-237)
OS: Mac OS X 11.5 x86_64
重现步骤:
我无法在下面的 kotlin 类CodeCoveragePlugin中导入JacocoTaskExtension 它在 jkd 1.8 上运行良好,但在 jdk11 下运行良好
为什么我使用 jdk11 ?
jdk11 对于 agp 7.+ 和 gradle 7.+ 是必需的
我的最终目标:使用 agp7.+
package com.jitendra.sdk.android.gradle.quality.coverage
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.testing.Test
import org.gradle.kotlin.dsl.*
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
@Suppress("UnstableApiUsage")
class CodeCoveragePlugin : Plugin<Project> {
override fun apply(project: Project) = project.run {
val extension = extensions.create("codeCoverage", CodeCoverageExtension::class)
apply(plugin = "jacoco")
jacoco {
toolVersion = 0.8.7
}
java { createJavaTasks(sourceSets["main"], extension) }
setupAndroidTasks(extension)
}
private fun Project.java(run: JavaPlugin.() -> Unit) = plugins.withType(JavaPlugin::class, run)
private val Project.sourceSets get() = convention.getPlugin(JavaPluginConvention::class).sourceSets
private fun Project.jacoco(run: JacocoPluginExtension.() -> Unit) = configure(run)
}