Log Kotlin Gradle subplugin loading
This commit is contained in:
+13
-7
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.gradle.internal.KotlinSourceSet
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
import org.gradle.api.Action
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.tasks.compile.AbstractCompile
|
import org.gradle.api.tasks.compile.AbstractCompile
|
||||||
import org.gradle.api.logging.Logging
|
|
||||||
import com.android.build.gradle.BaseExtension
|
import com.android.build.gradle.BaseExtension
|
||||||
import com.android.build.gradle.AppExtension
|
import com.android.build.gradle.AppExtension
|
||||||
import com.android.build.gradle.LibraryExtension
|
import com.android.build.gradle.LibraryExtension
|
||||||
@@ -38,6 +37,7 @@ import org.gradle.api.tasks.Delete
|
|||||||
import groovy.lang.Closure
|
import groovy.lang.Closure
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||||
import java.util.ServiceLoader
|
import java.util.ServiceLoader
|
||||||
|
import org.gradle.api.logging.*
|
||||||
|
|
||||||
val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations"
|
val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations"
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@ class Kotlin2JvmSourceSetProcessor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loadSubplugins(project).addSubpluginArguments(project, kotlinTask)
|
loadSubplugins(project, logger).addSubpluginArguments(project, kotlinTask)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -317,7 +317,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t
|
|||||||
sourceSets.getByName("androidTest")
|
sourceSets.getByName("androidTest")
|
||||||
}
|
}
|
||||||
|
|
||||||
val subpluginEnvironment = loadSubplugins(project)
|
val subpluginEnvironment = loadSubplugins(project, logger)
|
||||||
|
|
||||||
for (variant in variants) {
|
for (variant in variants) {
|
||||||
if (variant is LibraryVariant || variant is ApkVariant) {
|
if (variant is LibraryVariant || variant is ApkVariant) {
|
||||||
@@ -421,7 +421,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadSubplugins(project: Project): SubpluginEnvironment {
|
private fun loadSubplugins(project: Project, logger: Logger): SubpluginEnvironment {
|
||||||
try {
|
try {
|
||||||
val subplugins = ServiceLoader.load(
|
val subplugins = ServiceLoader.load(
|
||||||
javaClass<KotlinGradleSubplugin>(), project.getBuildscript().getClassLoader()).toList()
|
javaClass<KotlinGradleSubplugin>(), project.getBuildscript().getClassLoader()).toList()
|
||||||
@@ -438,17 +438,18 @@ private fun loadSubplugins(project: Project): SubpluginEnvironment {
|
|||||||
subpluginClasspaths.put(subplugin, files)
|
subpluginClasspaths.put(subplugin, files)
|
||||||
}
|
}
|
||||||
|
|
||||||
return SubpluginEnvironment(subpluginClasspaths, subplugins)
|
return SubpluginEnvironment(subpluginClasspaths, subplugins, logger)
|
||||||
} catch (e: NoClassDefFoundError) {
|
} catch (e: NoClassDefFoundError) {
|
||||||
// Skip plugin loading if KotlinGradleSubplugin is not defined.
|
// Skip plugin loading if KotlinGradleSubplugin is not defined.
|
||||||
// It is true now for tests in kotlin-gradle-plugin-core.
|
// It is true now for tests in kotlin-gradle-plugin-core.
|
||||||
return SubpluginEnvironment(mapOf(), listOf())
|
return SubpluginEnvironment(mapOf(), listOf(), logger)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SubpluginEnvironment(
|
private class SubpluginEnvironment(
|
||||||
val subpluginClasspaths: Map<KotlinGradleSubplugin, List<String>>,
|
val subpluginClasspaths: Map<KotlinGradleSubplugin, List<String>>,
|
||||||
val subplugins: List<KotlinGradleSubplugin>
|
val subplugins: List<KotlinGradleSubplugin>,
|
||||||
|
val logger: Logger
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun addSubpluginArguments(project: Project, compileTask: AbstractCompile) {
|
fun addSubpluginArguments(project: Project, compileTask: AbstractCompile) {
|
||||||
@@ -458,6 +459,11 @@ private class SubpluginEnvironment(
|
|||||||
|
|
||||||
subplugins.forEach { subplugin ->
|
subplugins.forEach { subplugin ->
|
||||||
val args = subplugin.getExtraArguments(project, compileTask)
|
val args = subplugin.getExtraArguments(project, compileTask)
|
||||||
|
|
||||||
|
with (subplugin) {
|
||||||
|
logger.debug("Subplugin ${getPluginName()} (${getGroupName()}:${getArtifactName()}) loaded.")
|
||||||
|
}
|
||||||
|
|
||||||
val subpluginClasspath = subpluginClasspaths[subplugin]
|
val subpluginClasspath = subpluginClasspaths[subplugin]
|
||||||
if (args != null && subpluginClasspath != null) {
|
if (args != null && subpluginClasspath != null) {
|
||||||
realPluginClasspaths.addAll(subpluginClasspath)
|
realPluginClasspaths.addAll(subpluginClasspath)
|
||||||
|
|||||||
Reference in New Issue
Block a user