KGP: Clean up configurations setup
KAPT classpath now uses extendsFrom in order to resolve all configurations as a single graph. Also, use Configuration.extendsFrom instead of DependencyHandler.add that is being deprecated in Gradle 6.7.
This commit is contained in:
committed by
nataliya.valtman
parent
519aeeb644
commit
33a0ec9b4f
+7
-1
@@ -450,7 +450,13 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To
|
||||
}
|
||||
}
|
||||
|
||||
kaptTask.kaptClasspathConfigurations = kaptClasspathConfigurations
|
||||
val kaptClasspathConfiguration =
|
||||
project.configurations.create("_kaptClasspath_" + kaptTask.name).setExtendsFrom(kaptClasspathConfigurations).also {
|
||||
it.isVisible = false
|
||||
it.isCanBeConsumed = false
|
||||
}
|
||||
kaptTask.kaptClasspath.from(kaptClasspathConfiguration)
|
||||
kaptTask.kaptClasspathConfigurationNames.set(kaptClasspathConfigurations.map { it.name })
|
||||
|
||||
KaptWithAndroid.androidVariantData(this)?.annotationProcessorOptionProviders?.let {
|
||||
kaptTask.annotationProcessorOptionProviders.add(it)
|
||||
|
||||
+5
-5
@@ -1,8 +1,9 @@
|
||||
package org.jetbrains.kotlin.gradle.internal
|
||||
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.file.ConfigurableFileCollection
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.internal.ConventionTask
|
||||
import org.gradle.api.provider.ListProperty
|
||||
import org.gradle.api.tasks.*
|
||||
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
||||
import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter
|
||||
@@ -43,8 +44,7 @@ abstract class KaptTask : ConventionTask(), TaskWithLocalState {
|
||||
|
||||
@get:Classpath
|
||||
@get:InputFiles
|
||||
val kaptClasspath: FileCollection
|
||||
get() = objects.fileCollection().from(kaptClasspathConfigurations)
|
||||
abstract val kaptClasspath: ConfigurableFileCollection
|
||||
|
||||
@get:Classpath
|
||||
@get:InputFiles
|
||||
@@ -53,7 +53,7 @@ abstract class KaptTask : ConventionTask(), TaskWithLocalState {
|
||||
}
|
||||
|
||||
@get:Internal
|
||||
internal lateinit var kaptClasspathConfigurations: List<Configuration>
|
||||
internal abstract val kaptClasspathConfigurationNames: ListProperty<String>
|
||||
|
||||
|
||||
@get:PathSensitive(PathSensitivity.NONE)
|
||||
@@ -195,7 +195,7 @@ abstract class KaptTask : ConventionTask(), TaskWithLocalState {
|
||||
+ "\nThe following files, containing annotation processors, are not present in KAPT classpath:\n"
|
||||
+ processorsAbsentInKaptClasspath.joinToString("\n") { " '$it'" }
|
||||
+ "\nAdd corresponding dependencies to any of the following configurations:\n"
|
||||
+ kaptClasspathConfigurations.joinToString("\n") { " '${it.name}'" }
|
||||
+ kaptClasspathConfigurationNames.get().joinToString("\n") { " '$it'" }
|
||||
)
|
||||
} else {
|
||||
logger.warn(
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.gradle.utils.optionalProvider
|
||||
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
||||
import java.io.File
|
||||
|
||||
open class KaptWithKotlincTask : KaptTask(), CompilerArgumentAwareWithInput<K2JVMCompilerArguments> {
|
||||
abstract class KaptWithKotlincTask : KaptTask(), CompilerArgumentAwareWithInput<K2JVMCompilerArguments> {
|
||||
@get:Internal
|
||||
internal val pluginOptions = CompilerPluginOptions()
|
||||
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ import java.net.URL
|
||||
import java.net.URLClassLoader
|
||||
import javax.inject.Inject
|
||||
|
||||
open class KaptWithoutKotlincTask @Inject constructor(private val workerExecutor: WorkerExecutor) : KaptTask() {
|
||||
abstract class KaptWithoutKotlincTask @Inject constructor(private val workerExecutor: WorkerExecutor) : KaptTask() {
|
||||
@get:InputFiles
|
||||
@get:Classpath
|
||||
@Suppress("unused")
|
||||
|
||||
+8
-5
@@ -6,11 +6,14 @@
|
||||
package org.jetbrains.kotlin.gradle.utils
|
||||
|
||||
import org.gradle.api.Project
|
||||
import java.lang.RuntimeException
|
||||
|
||||
fun Project.addExtendsFromRelation(extendingConfigurationName: String, extendsFromConfigurationName: String, forced: Boolean = true) {
|
||||
if (extendingConfigurationName != extendsFromConfigurationName) {
|
||||
if (forced || configurations.findByName(extendingConfigurationName) != null) {
|
||||
project.dependencies.add(extendingConfigurationName, project.configurations.getByName(extendsFromConfigurationName))
|
||||
}
|
||||
}
|
||||
if (extendingConfigurationName == extendsFromConfigurationName) return
|
||||
|
||||
val extending = configurations.findByName(extendingConfigurationName)
|
||||
?: if (forced) throw RuntimeException("Configuration $extendingConfigurationName does not exist.")
|
||||
else return
|
||||
|
||||
extending.extendsFrom(configurations.getByName(extendsFromConfigurationName))
|
||||
}
|
||||
Reference in New Issue
Block a user