Skip to content

Instantly share code, notes, and snippets.

@guliash
Last active July 21, 2020 11:42
Show Gist options
  • Save guliash/3687391db944fbf98d12cd117ba0de2f to your computer and use it in GitHub Desktop.
Save guliash/3687391db944fbf98d12cd117ba0de2f to your computer and use it in GitHub Desktop.
KotlinCompile custom task
plugins {
id "org.jetbrains.kotlin.jvm" version "1.3.72"
}
repositories {
google()
jcenter()
}
dependencies {
implementation "com.android.tools.build:gradle:4.0.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72"
implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72"
}
import com.android.build.gradle.AppExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.compile.JavaCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
internal class MyPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.afterEvaluate {
val androidExtension = project.extensions.getByType(AppExtension::class.java)
androidExtension.applicationVariants.forEach { variant ->
val javaCompileTask =
project.tasks.findByName("compile${variant.name.capitalize()}JavaWithJavac") as JavaCompile
val kotlinCompileTask =
project.tasks.findByName("compile${variant.name.capitalize()}Kotlin") as KotlinCompile
project.tasks.create(
"compileGeneratedKotlinClasses${variant.name.capitalize()}",
KotlinCompile::class.java
) { compileGeneratedKotlinClassesTask ->
compileGeneratedKotlinClassesTask.doFirst {
compileGeneratedKotlinClassesTask.source =
javaCompileTask.outputs.files.filter { it.extension == "kt" }.asFileTree
compileGeneratedKotlinClassesTask.destinationDir = kotlinCompileTask.destinationDir
}
javaCompileTask.finalizedBy(compileGeneratedKotlinClassesTask.path)
}
}
}
}
}
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileGeneratedKotlinClassesDebug'.
at org.gradle.execution.plan.LocalTaskNode.resolveMutations(LocalTaskNode.java:244)
at org.gradle.execution.plan.DefaultExecutionPlan.getResolvedMutationInfo(DefaultExecutionPlan.java:607)
at org.gradle.execution.plan.DefaultExecutionPlan.selectNext(DefaultExecutionPlan.java:533)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$executeNextNode$1(DefaultPlanExecutor.java:166)
at org.gradle.internal.resources.DefaultResourceLockCoordinationService.withStateLock(DefaultResourceLockCoordinationService.java:45)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:155)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.util.NoSuchElementException: Key compileGeneratedKotlinClassesDebug is missing in the map.
at kotlin.collections.MapsKt__MapWithDefaultKt.getOrImplicitDefaultNullable(MapWithDefault.kt:24)
at kotlin.collections.MapsKt__MapsKt.getValue(Maps.kt:296)
at org.jetbrains.kotlin.gradle.tasks.KotlinCompileTaskData$Companion.get(kotlinCompileTaskData.kt:36)
at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile$taskData$2.call(Tasks.kt:144)
at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile$taskData$2.call(Tasks.kt:115)
at org.gradle.api.internal.provider.DefaultProvider.getOrNull(DefaultProvider.java:41)
at org.gradle.api.internal.provider.AbstractReadOnlyProvider.get(AbstractReadOnlyProvider.java:27)
at org.jetbrains.kotlin.gradle.utils.ProviderApiUtilsKt.getValue(providerApiUtils.kt:14)
at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.getTaskData$kotlin_gradle_plugin(Tasks.kt)
at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.getDestinationDir(Tasks.kt:197)
at org.jetbrains.kotlin.gradle.tasks.KotlinCompile_Decorated.getDestinationDir(Unknown Source)
at org.gradle.api.tasks.compile.AbstractCompile$BackwardCompatibilityOutputDirectoryConvention.getOrNull(AbstractCompile.java:168)
at org.gradle.api.tasks.compile.AbstractCompile$BackwardCompatibilityOutputDirectoryConvention.getOrNull(AbstractCompile.java:149)
at org.gradle.api.internal.provider.AbstractMinimalProvider.isPresent(AbstractMinimalProvider.java:47)
at org.gradle.api.internal.provider.DefaultProperty.isPresent(DefaultProperty.java:178)
at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue.call(AbstractNestedRuntimeBeanNode.java:152)
at org.gradle.util.GUtil.uncheckedCall(GUtil.java:425)
at org.gradle.util.DeferredUtil.unpackNestableDeferred(DeferredUtil.java:64)
at org.gradle.util.DeferredUtil.unpack(DeferredUtil.java:38)
at org.gradle.api.internal.tasks.properties.FileParameterUtils.resolveOutputFilePropertySpecs(FileParameterUtils.java:107)
at org.gradle.execution.plan.LocalTaskNode$1.lambda$visitOutputFileProperty$1(LocalTaskNode.java:208)
at org.gradle.execution.plan.LocalTaskNode.withDeadlockHandling(LocalTaskNode.java:285)
at org.gradle.execution.plan.LocalTaskNode.access$000(LocalTaskNode.java:52)
at org.gradle.execution.plan.LocalTaskNode$1.visitOutputFileProperty(LocalTaskNode.java:204)
at org.gradle.api.internal.tasks.properties.annotations.AbstractOutputPropertyAnnotationHandler.visitPropertyValue(AbstractOutputPropertyAnnotationHandler.java:50)
at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode.visitProperties(AbstractNestedRuntimeBeanNode.java:59)
at org.gradle.api.internal.tasks.properties.bean.RootRuntimeBeanNode.visitNode(RootRuntimeBeanNode.java:32)
at org.gradle.api.internal.tasks.properties.DefaultPropertyWalker.visitProperties(DefaultPropertyWalker.java:41)
at org.gradle.api.internal.tasks.TaskPropertyUtils.visitProperties(TaskPropertyUtils.java:42)
at org.gradle.api.internal.tasks.TaskPropertyUtils.visitProperties(TaskPropertyUtils.java:32)
at org.gradle.execution.plan.LocalTaskNode.resolveMutations(LocalTaskNode.java:201)
... 12 more
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment