Last active
July 21, 2020 11:42
-
-
Save guliash/3687391db944fbf98d12cd117ba0de2f to your computer and use it in GitHub Desktop.
KotlinCompile custom task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
} | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* 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