[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
|
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 {
|
interface KotlinCommonCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptions {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+5
@@ -5,6 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.dsl
|
package org.jetbrains.kotlin.gradle.dsl
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Deprecated("Rebasing Artifact. Will be removed later", replaceWith = ReplaceWith("KotlinCommonCompilerToolOptions"))
|
||||||
|
typealias CompilerCommonToolOptions = KotlinCommonCompilerToolOptions
|
||||||
|
|
||||||
interface KotlinCommonCompilerToolOptions {
|
interface KotlinCommonCompilerToolOptions {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+3
@@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.dsl
|
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)
|
@Deprecated("Use KotlinCommonCompilerOptions instead", level = DeprecationLevel.WARNING)
|
||||||
interface KotlinCommonOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions {
|
interface KotlinCommonOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions {
|
||||||
override val options: org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
override val options: org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
||||||
|
|||||||
+3
@@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.dsl
|
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 {
|
interface KotlinJsCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+3
@@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.dsl
|
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 {
|
interface KotlinJsDceCompilerToolOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptions {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+3
@@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.dsl
|
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 {
|
interface KotlinJvmCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+3
@@ -5,5 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.dsl
|
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 {
|
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.*
|
||||||
import org.gradle.api.attributes.Category
|
import org.gradle.api.attributes.Category
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.api.file.Directory
|
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.plugins.JavaPlugin
|
import org.gradle.api.plugins.JavaPlugin
|
||||||
import org.gradle.api.provider.Provider
|
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.publish.maven.MavenPublication
|
||||||
import org.gradle.api.tasks.SourceSet
|
import org.gradle.api.tasks.SourceSet
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.api.tasks.compile.AbstractCompile
|
|
||||||
import org.gradle.jvm.tasks.Jar
|
import org.gradle.jvm.tasks.Jar
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
import org.jetbrains.kotlin.gradle.dsl.*
|
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.internal.customizeKotlinDependencies
|
||||||
import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
|
import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
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.scripting.internal.ScriptingGradleSubplugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.*
|
import org.jetbrains.kotlin.gradle.targets.js.ir.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
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.tasks.configuration.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.*
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -51,62 +47,6 @@ val KOTLIN_DSL_NAME = "kotlin"
|
|||||||
val KOTLIN_JS_DSL_NAME = "kotlin2js"
|
val KOTLIN_JS_DSL_NAME = "kotlin2js"
|
||||||
val KOTLIN_OPTIONS_DSL_NAME = "kotlinOptions"
|
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) {
|
internal fun KotlinCompilationOutput.addClassesDir(classesDirProvider: () -> FileCollection) {
|
||||||
classesDirs.from(Callable { classesDirProvider() })
|
classesDirs.from(Callable { classesDirProvider() })
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user