[Gradle][Minor] Move Kotlin2JvmSourceSetProcessor into separate source file
KT-54312
This commit is contained in:
committed by
Space Team
parent
10ca5d7f2a
commit
b5327bc46e
+3
@@ -5,6 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
@Deprecated("Rebasing Artifact. Will be removed later", replaceWith = ReplaceWith("KotlinJsCompilerOptions"))
|
||||
typealias CompilerCommonCoOptions = KotlinJsCompilerOptions
|
||||
|
||||
interface KotlinCommonCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptions {
|
||||
|
||||
/**
|
||||
|
||||
+5
@@ -5,6 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
|
||||
|
||||
@Deprecated("Rebasing Artifact. Will be removed later", replaceWith = ReplaceWith("KotlinCommonCompilerToolOptions"))
|
||||
typealias CompilerCommonToolOptions = KotlinCommonCompilerToolOptions
|
||||
|
||||
interface KotlinCommonCompilerToolOptions {
|
||||
|
||||
/**
|
||||
|
||||
+3
@@ -5,6 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
@Deprecated("Rebasing Artifact. Will be removed later", replaceWith = ReplaceWith("KotlinCommonCompilerOptions"))
|
||||
typealias CompilerCommonOptions = KotlinCommonCompilerOptions
|
||||
|
||||
@Deprecated("Use KotlinCommonCompilerOptions instead", level = DeprecationLevel.WARNING)
|
||||
interface KotlinCommonOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions {
|
||||
override val options: org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
||||
|
||||
+3
@@ -5,6 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
@Deprecated("Rebasing Artifact. Will be removed later", replaceWith = ReplaceWith("KotlinJsCompilerOptions"))
|
||||
typealias CompilerJsOptions = KotlinJsCompilerOptions
|
||||
|
||||
interface KotlinJsCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions {
|
||||
|
||||
/**
|
||||
|
||||
+3
@@ -5,6 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
@Deprecated("Rebasing Artifact. Will be removed later", replaceWith = ReplaceWith("KotlinJsDceCompilerToolOptions"))
|
||||
typealias CompilerJsDceOptions = KotlinJsDceCompilerToolOptions
|
||||
|
||||
interface KotlinJsDceCompilerToolOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptions {
|
||||
|
||||
/**
|
||||
|
||||
+3
@@ -5,6 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
@Deprecated("Rebasing Artifact. Will be removed later", replaceWith = ReplaceWith("KotlinJvmCompilerOptions"))
|
||||
typealias CompilerJvmOptions = KotlinJvmCompilerOptions
|
||||
|
||||
interface KotlinJvmCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions {
|
||||
|
||||
/**
|
||||
|
||||
+3
@@ -5,5 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
@Deprecated("Rebasing Artifact. Will be removed later", replaceWith = ReplaceWith("KotlinMultiplatformCommonCompilerOptions"))
|
||||
typealias CompilerMultiplatformCommonOptions = KotlinMultiplatformCommonCompilerOptions
|
||||
|
||||
interface KotlinMultiplatformCommonCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions {
|
||||
}
|
||||
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.Directory
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.tasks.SourceSet
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.jetbrains.kotlin.gradle.dsl.CompilerJvmOptions
|
||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData
|
||||
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||
import org.jetbrains.kotlin.gradle.tasks.configuration.KotlinCompileConfig
|
||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||
import org.jetbrains.kotlin.gradle.utils.whenKaptEnabled
|
||||
|
||||
internal class Kotlin2JvmSourceSetProcessor(
|
||||
tasksProvider: KotlinTasksProvider,
|
||||
kotlinCompilation: KotlinCompilationData<*>
|
||||
) : KotlinSourceSetProcessor<KotlinCompile>(
|
||||
tasksProvider, "Compiles the $kotlinCompilation.", kotlinCompilation
|
||||
) {
|
||||
override fun doRegisterTask(project: Project, taskName: String): TaskProvider<out KotlinCompile> {
|
||||
val configAction = KotlinCompileConfig(kotlinCompilation)
|
||||
applyStandardTaskConfiguration(configAction)
|
||||
return tasksProvider.registerKotlinJVMTask(
|
||||
project,
|
||||
taskName,
|
||||
kotlinCompilation.compilerOptions.options as CompilerJvmOptions,
|
||||
configAction
|
||||
)
|
||||
}
|
||||
|
||||
override fun doTargetSpecificProcessing() {
|
||||
project.whenKaptEnabled {
|
||||
Kapt3GradleSubplugin.createAptConfigurationIfNeeded(project, kotlinCompilation.compilationPurpose)
|
||||
}
|
||||
|
||||
ScriptingGradleSubplugin.configureForSourceSet(project, kotlinCompilation.compilationPurpose)
|
||||
|
||||
project.whenEvaluated {
|
||||
val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project)
|
||||
|
||||
if (kotlinCompilation is KotlinCompilation<*>) // FIXME support compiler plugins with PM20
|
||||
subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation)
|
||||
|
||||
javaSourceSet?.let { java ->
|
||||
val javaTask = project.tasks.withType<AbstractCompile>().named(java.compileJavaTaskName)
|
||||
javaTask.configure { javaCompile ->
|
||||
javaCompile.classpath += project.files(kotlinTask.flatMap { it.destinationDirectory })
|
||||
}
|
||||
kotlinTask.configure { kotlinCompile ->
|
||||
kotlinCompile.javaOutputDir.set(javaTask.flatMap { it.destinationDirectory })
|
||||
}
|
||||
}
|
||||
|
||||
if (sourceSetName == SourceSet.MAIN_SOURCE_SET_NAME) {
|
||||
project.pluginManager.withPlugin("java-library") {
|
||||
registerKotlinOutputForJavaLibrary(kotlinTask.flatMap { it.destinationDirectory })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun registerKotlinOutputForJavaLibrary(outputDir: Provider<Directory>) {
|
||||
val configuration = project.configurations.getByName("apiElements")
|
||||
configuration.outgoing.variants.getByName("classes").artifact(outputDir) {
|
||||
it.type = "java-classes-directory"
|
||||
}
|
||||
}
|
||||
}
|
||||
-60
@@ -9,7 +9,6 @@ import com.android.build.gradle.*
|
||||
import org.gradle.api.*
|
||||
import org.gradle.api.attributes.Category
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.gradle.api.file.Directory
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.plugins.JavaPlugin
|
||||
import org.gradle.api.provider.Provider
|
||||
@@ -18,11 +17,9 @@ import org.gradle.api.publish.maven.MavenPom
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.api.tasks.SourceSet
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin
|
||||
import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
|
||||
import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
@@ -34,7 +31,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.isMainCompilationData
|
||||
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.*
|
||||
import org.jetbrains.kotlin.gradle.tasks.*
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.configuration.*
|
||||
import org.jetbrains.kotlin.gradle.utils.*
|
||||
import java.io.File
|
||||
@@ -51,62 +47,6 @@ val KOTLIN_DSL_NAME = "kotlin"
|
||||
val KOTLIN_JS_DSL_NAME = "kotlin2js"
|
||||
val KOTLIN_OPTIONS_DSL_NAME = "kotlinOptions"
|
||||
|
||||
internal class Kotlin2JvmSourceSetProcessor(
|
||||
tasksProvider: KotlinTasksProvider,
|
||||
kotlinCompilation: KotlinCompilationData<*>
|
||||
) : KotlinSourceSetProcessor<KotlinCompile>(
|
||||
tasksProvider, "Compiles the $kotlinCompilation.", kotlinCompilation
|
||||
) {
|
||||
override fun doRegisterTask(project: Project, taskName: String): TaskProvider<out KotlinCompile> {
|
||||
val configAction = KotlinCompileConfig(kotlinCompilation)
|
||||
applyStandardTaskConfiguration(configAction)
|
||||
return tasksProvider.registerKotlinJVMTask(
|
||||
project,
|
||||
taskName,
|
||||
kotlinCompilation.compilerOptions.options as KotlinJvmCompilerOptions,
|
||||
configAction
|
||||
)
|
||||
}
|
||||
|
||||
override fun doTargetSpecificProcessing() {
|
||||
project.whenKaptEnabled {
|
||||
Kapt3GradleSubplugin.createAptConfigurationIfNeeded(project, kotlinCompilation.compilationPurpose)
|
||||
}
|
||||
|
||||
ScriptingGradleSubplugin.configureForSourceSet(project, kotlinCompilation.compilationPurpose)
|
||||
|
||||
project.whenEvaluated {
|
||||
val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project)
|
||||
|
||||
if (kotlinCompilation is KotlinCompilation<*>) // FIXME support compiler plugins with PM20
|
||||
subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation)
|
||||
|
||||
javaSourceSet?.let { java ->
|
||||
val javaTask = project.tasks.withType<AbstractCompile>().named(java.compileJavaTaskName)
|
||||
javaTask.configure { javaCompile ->
|
||||
javaCompile.classpath += project.files(kotlinTask.flatMap { it.destinationDirectory })
|
||||
}
|
||||
kotlinTask.configure { kotlinCompile ->
|
||||
kotlinCompile.javaOutputDir.set(javaTask.flatMap { it.destinationDirectory })
|
||||
}
|
||||
}
|
||||
|
||||
if (sourceSetName == SourceSet.MAIN_SOURCE_SET_NAME) {
|
||||
project.pluginManager.withPlugin("java-library") {
|
||||
registerKotlinOutputForJavaLibrary(kotlinTask.flatMap { it.destinationDirectory })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun registerKotlinOutputForJavaLibrary(outputDir: Provider<Directory>) {
|
||||
val configuration = project.configurations.getByName("apiElements")
|
||||
configuration.outgoing.variants.getByName("classes").artifact(outputDir) {
|
||||
it.type = "java-classes-directory"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal fun KotlinCompilationOutput.addClassesDir(classesDirProvider: () -> FileCollection) {
|
||||
classesDirs.from(Callable { classesDirProvider() })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user