Make dependencies on Android gradle plugin non-transitive

com.android.tools.build:gradle brings about 50 unused transitive dependencies including idea-core and uast, sometimes it breaks IDE features like navigation to declarations and debugging.

Inline contents of ReflectionUtil.findMethod to remove dependency on idea-core
This commit is contained in:
Vyacheslav Gerasimov
2018-03-14 20:34:10 +03:00
parent 04cbea4956
commit ef018d2ac1
2 changed files with 9 additions and 7 deletions
@@ -57,14 +57,17 @@ dependencies {
runtime project(path: ':kotlin-compiler-runner', configuration: 'runtimeJar')
runtime project(':kotlin-reflect')
agp25CompileOnly 'com.android.tools.build:gradle:3.0.0-alpha1'
// com.android.tools.build:gradle has ~50 unneeded transitive dependencies
agp25CompileOnly('com.android.tools.build:gradle:3.0.0-alpha1') { transitive = false }
agp25CompileOnly('com.android.tools.build:gradle-core:3.0.0-alpha1') { transitive = false }
agp25CompileOnly('com.android.tools.build:builder-model:3.0.0-alpha1') { transitive = false }
agp25CompileOnly 'org.codehaus.groovy:groovy-all:2.4.12'
agp25CompileOnly gradleApi()
agp25CompileOnly project(':kotlin-annotation-processing')
agp25CompileOnly project(':kotlin-annotation-processing-gradle')
testCompileOnly project(':compiler')
testCompile project (path: ':kotlin-build-common', configuration: 'tests-jar')
testCompile project(path: ':kotlin-build-common', configuration: 'tests-jar')
testCompile project(':kotlin-android-extensions')
testCompile project(':kotlin-compiler-runner')
testCompile project(':kotlin-test::kotlin-test-junit')
@@ -7,9 +7,7 @@ import com.android.builder.model.SourceProvider
import org.gradle.api.Project
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.compile.AbstractCompile
import com.intellij.util.ReflectionUtil
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin
import org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin
import org.jetbrains.kotlin.gradle.internal.KaptTask
import org.jetbrains.kotlin.gradle.internal.KaptVariantData
import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
@@ -169,9 +167,10 @@ class Android25ProjectHandler(kotlinConfigurationTools: KotlinConfigurationTools
//TODO once the Android plugin reaches its 3.0.0 release, consider compiling against it (remove the reflective call)
private val BaseVariant.dataBindingDependencyArtifactsIfSupported: FileCollection?
get() = ReflectionUtil.findMethod(
this::class.java.methods.toList(),
"getDataBindingDependencyArtifacts")?.invoke(this) as? FileCollection
get() = this::class.java.methods
.find { it.name == "getDataBindingDependencyArtifacts" }
?.also { it.isAccessible = true }
?.invoke(this) as? FileCollection
override fun wrapVariantDataForKapt(variantData: BaseVariant): KaptVariantData<BaseVariant> =
KaptVariant(variantData)