[Gradle] Introduce compilerOptions on Kotlin targets for JVM
KotlinJvmTarget, KotlinAndroidTarget, KotlinWithJavaTarget now expose compiler options that are passed as a convention into target compilations compiler options. Compiler options from Kotlin/JVM and Kotlin/Android plugins compiler options are used now as convention for target compiler options. ^KT-57292 In Progress
This commit is contained in:
committed by
Space Team
parent
38b17420c1
commit
6f394f42a6
+94
@@ -55,6 +55,52 @@ class CompilerOptionsProjectIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GradleTest
|
||||||
|
@DisplayName("Jvm project target compiler options DSL override project level options")
|
||||||
|
@JvmGradlePluginTests
|
||||||
|
fun jvmOptionTarget(gradleVersion: GradleVersion) {
|
||||||
|
project(
|
||||||
|
"simpleProject",
|
||||||
|
gradleVersion,
|
||||||
|
buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)
|
||||||
|
) {
|
||||||
|
buildGradle.appendText(
|
||||||
|
//language=Groovy
|
||||||
|
"""
|
||||||
|
|
|
||||||
|
|kotlin {
|
||||||
|
| target.compilerOptions {
|
||||||
|
| javaParameters = true
|
||||||
|
| verbose = false
|
||||||
|
| }
|
||||||
|
|
|
||||||
|
| compilerOptions {
|
||||||
|
| javaParameters = false
|
||||||
|
| verbose = false
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
build("compileKotlin") {
|
||||||
|
assertTasksExecuted(":compileKotlin")
|
||||||
|
|
||||||
|
val compilationArgs = output.lineSequence().first { it.contains("Kotlin compiler args:") }
|
||||||
|
|
||||||
|
assert(compilationArgs.contains("-java-parameters")) {
|
||||||
|
printBuildOutput()
|
||||||
|
"Compiler arguments does not contain '-progressive': $compilationArgs"
|
||||||
|
}
|
||||||
|
|
||||||
|
// '-verbose' by default will be set to 'true' by debug log level
|
||||||
|
assert(!compilationArgs.contains("-verbose")) {
|
||||||
|
printBuildOutput()
|
||||||
|
"Compiler arguments contains '-verbose': $compilationArgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@DisplayName("languageSettings should not override project options when not configured")
|
@DisplayName("languageSettings should not override project options when not configured")
|
||||||
@JvmGradlePluginTests
|
@JvmGradlePluginTests
|
||||||
@GradleTest
|
@GradleTest
|
||||||
@@ -252,6 +298,54 @@ class CompilerOptionsProjectIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("Android target compiler options override project level compiler options")
|
||||||
|
@AndroidGradlePluginTests
|
||||||
|
@GradleAndroidTest
|
||||||
|
fun androidProjectTargetOverrideProjectOptions(
|
||||||
|
gradleVersion: GradleVersion,
|
||||||
|
agpVersion: String,
|
||||||
|
jdk: JdkVersions.ProvidedJdk
|
||||||
|
) {
|
||||||
|
project(
|
||||||
|
"AndroidSimpleApp",
|
||||||
|
gradleVersion,
|
||||||
|
buildJdk = jdk.location,
|
||||||
|
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion, logLevel = LogLevel.DEBUG)
|
||||||
|
) {
|
||||||
|
buildGradle.appendText(
|
||||||
|
//language=Groovy
|
||||||
|
"""
|
||||||
|
|
|
||||||
|
|kotlin {
|
||||||
|
| target.compilerOptions {
|
||||||
|
| javaParameters = true
|
||||||
|
| moduleName = "my_app"
|
||||||
|
| }
|
||||||
|
|
|
||||||
|
| compilerOptions {
|
||||||
|
| javaParameters = false
|
||||||
|
| moduleName = "other_app"
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
build("compileDebugKotlin") {
|
||||||
|
assertTasksExecuted(":compileDebugKotlin")
|
||||||
|
|
||||||
|
assertOutputDoesNotContain(
|
||||||
|
"w: :compileKotlin 'KotlinJvmCompile.moduleName' is deprecated, please migrate to 'compilerOptions.moduleName'!"
|
||||||
|
)
|
||||||
|
|
||||||
|
assertCompilerArguments(
|
||||||
|
":compileDebugKotlin",
|
||||||
|
"-java-parameters",
|
||||||
|
"-module-name my_app_debug"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@DisplayName("KT-59056: freeCompilerArgs are combined with android.kotlinOptions.freeCompilerArgs")
|
@DisplayName("KT-59056: freeCompilerArgs are combined with android.kotlinOptions.freeCompilerArgs")
|
||||||
@AndroidGradlePluginTests
|
@AndroidGradlePluginTests
|
||||||
@GradleAndroidTest
|
@GradleAndroidTest
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ internal open class KotlinAndroidPlugin(
|
|||||||
kotlinAndroidExtension.target = target
|
kotlinAndroidExtension.target = target
|
||||||
project.configureCompilerOptionsForTarget(
|
project.configureCompilerOptionsForTarget(
|
||||||
kotlinAndroidExtension.compilerOptions,
|
kotlinAndroidExtension.compilerOptions,
|
||||||
target.compilations
|
target.compilerOptions
|
||||||
)
|
)
|
||||||
kotlinAndroidExtension.compilerOptions.noJdk.value(true).disallowChanges()
|
kotlinAndroidExtension.compilerOptions.noJdk.value(true).disallowChanges()
|
||||||
|
|
||||||
|
|||||||
+6
-13
@@ -29,7 +29,7 @@ internal open class KotlinJvmPlugin(
|
|||||||
|
|
||||||
internal fun Project.configureCompilerOptionsForTarget(
|
internal fun Project.configureCompilerOptionsForTarget(
|
||||||
extensionCompilerOptions: KotlinJvmCompilerOptions,
|
extensionCompilerOptions: KotlinJvmCompilerOptions,
|
||||||
@Suppress("DEPRECATION") compilationsContainer: NamedDomainObjectContainer<out AbstractKotlinCompilation<KotlinJvmOptions>>
|
targetCompilerOptions: KotlinJvmCompilerOptions
|
||||||
) {
|
) {
|
||||||
extensionCompilerOptions.verbose.convention(logger.isDebugEnabled)
|
extensionCompilerOptions.verbose.convention(logger.isDebugEnabled)
|
||||||
extensionCompilerOptions.moduleName.convention(baseModuleName())
|
extensionCompilerOptions.moduleName.convention(baseModuleName())
|
||||||
@@ -37,17 +37,10 @@ internal open class KotlinJvmPlugin(
|
|||||||
extensionCompilerOptions,
|
extensionCompilerOptions,
|
||||||
project
|
project
|
||||||
)
|
)
|
||||||
compilationsContainer.configureEach {
|
KotlinJvmCompilerOptionsHelper.syncOptionsAsConvention(
|
||||||
val jvmCompilerOptions = it.compilerOptions.options as KotlinJvmCompilerOptions
|
from = extensionCompilerOptions,
|
||||||
KotlinJvmCompilerOptionsHelper.syncOptionsAsConvention(
|
into = targetCompilerOptions
|
||||||
from = extensionCompilerOptions,
|
)
|
||||||
into = jvmCompilerOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
jvmCompilerOptions.moduleName.convention(
|
|
||||||
it.moduleNameForCompilation(extensionCompilerOptions.moduleName)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +78,7 @@ internal open class KotlinJvmPlugin(
|
|||||||
|
|
||||||
project.configureCompilerOptionsForTarget(
|
project.configureCompilerOptionsForTarget(
|
||||||
kotlinExtension.compilerOptions,
|
kotlinExtension.compilerOptions,
|
||||||
target.compilations
|
target.compilerOptions
|
||||||
)
|
)
|
||||||
|
|
||||||
project.pluginManager.apply(ScriptingGradleSubplugin::class.java)
|
project.pluginManager.apply(ScriptingGradleSubplugin::class.java)
|
||||||
|
|||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 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.mpp.compilationImpl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsHelper
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.moduleNameForCompilation
|
||||||
|
|
||||||
|
internal class KotlinCompilationJvmCompilerOptionsFromTargetConfigurator(
|
||||||
|
private val targetCompilerOptions: KotlinJvmCompilerOptions
|
||||||
|
) : KotlinCompilationImplFactory.PostConfigure {
|
||||||
|
override fun configure(compilation: DecoratedKotlinCompilation<*>) {
|
||||||
|
val jvmCompilerOptions = compilation.compilerOptions.options as KotlinJvmCompilerOptions
|
||||||
|
KotlinJvmCompilerOptionsHelper.syncOptionsAsConvention(
|
||||||
|
targetCompilerOptions,
|
||||||
|
jvmCompilerOptions
|
||||||
|
)
|
||||||
|
|
||||||
|
jvmCompilerOptions.moduleName.convention(
|
||||||
|
moduleNameForCompilation(
|
||||||
|
compilation.compilationName,
|
||||||
|
targetCompilerOptions.moduleName
|
||||||
|
).orElse(compilation.moduleNameForCompilation())
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
+17
@@ -12,8 +12,11 @@ import org.gradle.api.artifacts.Configuration
|
|||||||
import org.gradle.api.attributes.Attribute
|
import org.gradle.api.attributes.Attribute
|
||||||
import org.gradle.api.attributes.AttributeContainer
|
import org.gradle.api.attributes.AttributeContainer
|
||||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsDefault
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.copyAttributes
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.copyAttributes
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
||||||
import org.jetbrains.kotlin.gradle.utils.forAllAndroidVariants
|
import org.jetbrains.kotlin.gradle.utils.forAllAndroidVariants
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
@@ -327,5 +330,19 @@ abstract class KotlinAndroidTarget @Inject constructor(
|
|||||||
private fun filterOutAndroidAgpVersionAttribute(
|
private fun filterOutAndroidAgpVersionAttribute(
|
||||||
attribute: Attribute<*>,
|
attribute: Attribute<*>,
|
||||||
): Boolean = attribute.name != "com.android.build.api.attributes.AgpVersionAttr"
|
): Boolean = attribute.name != "com.android.build.api.attributes.AgpVersionAttr"
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
override val compilerOptions: KotlinJvmCompilerOptions = project.objects
|
||||||
|
.newInstance<KotlinJvmCompilerOptionsDefault>()
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun compilerOptions(configure: KotlinJvmCompilerOptions.() -> Unit) {
|
||||||
|
configure(compilerOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun compilerOptions(configure: Action<KotlinJvmCompilerOptions>) {
|
||||||
|
configure.execute(compilerOptions)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -11,7 +11,9 @@ import org.jetbrains.kotlin.gradle.plugin.hierarchy.KotlinSourceSetTreeClassifie
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.hierarchy.KotlinSourceSetTreeClassifier.Property
|
import org.jetbrains.kotlin.gradle.plugin.hierarchy.KotlinSourceSetTreeClassifier.Property
|
||||||
import org.jetbrains.kotlin.gradle.plugin.hierarchy.sourceSetTreeClassifier
|
import org.jetbrains.kotlin.gradle.plugin.hierarchy.sourceSetTreeClassifier
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationFriendPathsResolver
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationFriendPathsResolver
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPostConfigure
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinAndroidCompilationAssociator
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinAndroidCompilationAssociator
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationJvmCompilerOptionsFromTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.AndroidCompilationSourceSetsContainerFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.AndroidCompilationSourceSetsContainerFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinJvmCompilerOptionsFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinJvmCompilerOptionsFactory
|
||||||
@@ -35,7 +37,11 @@ class KotlinJvmAndroidCompilationFactory internal constructor(
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
compilationAssociator = KotlinAndroidCompilationAssociator,
|
compilationAssociator = KotlinAndroidCompilationAssociator,
|
||||||
compilationSourceSetsContainerFactory = AndroidCompilationSourceSetsContainerFactory(target, variant)
|
compilationSourceSetsContainerFactory = AndroidCompilationSourceSetsContainerFactory(target, variant),
|
||||||
|
postConfigureAction = KotlinCompilationImplFactory.PostConfigure.composite(
|
||||||
|
DefaultKotlinCompilationPostConfigure,
|
||||||
|
KotlinCompilationJvmCompilerOptionsFromTargetConfigurator(target.compilerOptions)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun create(name: String): KotlinJvmAndroidCompilation {
|
override fun create(name: String): KotlinJvmAndroidCompilation {
|
||||||
|
|||||||
+8
-2
@@ -6,19 +6,25 @@
|
|||||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPostConfigure
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationJvmCompilerOptionsFromTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinJvmCompilationAssociator
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinJvmCompilationAssociator
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinJvmCompilerOptionsFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinJvmCompilerOptionsFactory
|
||||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||||
|
|
||||||
open class KotlinJvmCompilationFactory internal constructor(
|
open class KotlinJvmCompilationFactory internal constructor(
|
||||||
override val target: KotlinJvmTarget
|
final override val target: KotlinJvmTarget
|
||||||
) : KotlinCompilationFactory<KotlinJvmCompilation> {
|
) : KotlinCompilationFactory<KotlinJvmCompilation> {
|
||||||
|
|
||||||
private val compilationImplFactory: KotlinCompilationImplFactory =
|
private val compilationImplFactory: KotlinCompilationImplFactory =
|
||||||
KotlinCompilationImplFactory(
|
KotlinCompilationImplFactory(
|
||||||
compilerOptionsFactory = KotlinJvmCompilerOptionsFactory,
|
compilerOptionsFactory = KotlinJvmCompilerOptionsFactory,
|
||||||
compilationAssociator = KotlinJvmCompilationAssociator
|
compilationAssociator = KotlinJvmCompilationAssociator,
|
||||||
|
postConfigureAction = KotlinCompilationImplFactory.PostConfigure.composite(
|
||||||
|
DefaultKotlinCompilationPostConfigure,
|
||||||
|
KotlinCompilationJvmCompilerOptionsFromTargetConfigurator(target.compilerOptions)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
override val itemClass: Class<KotlinJvmCompilation>
|
override val itemClass: Class<KotlinJvmCompilation>
|
||||||
|
|||||||
+18
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.targets.jvm
|
package org.jetbrains.kotlin.gradle.targets.jvm
|
||||||
|
|
||||||
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.InvalidUserCodeException
|
import org.gradle.api.InvalidUserCodeException
|
||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
@@ -20,6 +21,8 @@ import org.gradle.jvm.tasks.Jar
|
|||||||
import org.gradle.language.jvm.tasks.ProcessResources
|
import org.gradle.language.jvm.tasks.ProcessResources
|
||||||
import org.gradle.util.GradleVersion
|
import org.gradle.util.GradleVersion
|
||||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.*
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsDefault
|
||||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseDsl
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseDsl
|
||||||
@@ -34,8 +37,8 @@ import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmRunDsl
|
|||||||
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmRunDslImpl
|
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmRunDslImpl
|
||||||
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.registerMainRunTask
|
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.registerMainRunTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.Future
|
import org.jetbrains.kotlin.gradle.utils.Future
|
||||||
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
|
||||||
import org.jetbrains.kotlin.gradle.utils.findAppliedAndroidPluginIdOrNull
|
import org.jetbrains.kotlin.gradle.utils.findAppliedAndroidPluginIdOrNull
|
||||||
import org.jetbrains.kotlin.gradle.utils.future
|
import org.jetbrains.kotlin.gradle.utils.future
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
||||||
@@ -331,5 +334,19 @@ abstract class KotlinJvmTarget @Inject constructor(
|
|||||||
*/
|
*/
|
||||||
private fun areRuntimeOrCompileConfigurationsAvailable(): Boolean =
|
private fun areRuntimeOrCompileConfigurationsAvailable(): Boolean =
|
||||||
GradleVersion.version(project.gradle.gradleVersion) <= GradleVersion.version("6.8.3")
|
GradleVersion.version(project.gradle.gradleVersion) <= GradleVersion.version("6.8.3")
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
override val compilerOptions: KotlinJvmCompilerOptions = project.objects
|
||||||
|
.newInstance<KotlinJvmCompilerOptionsDefault>()
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun compilerOptions(configure: KotlinJvmCompilerOptions.() -> Unit) {
|
||||||
|
configure(compilerOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun compilerOptions(configure: Action<KotlinJvmCompilerOptions>) {
|
||||||
|
configure.execute(compilerOptions)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-11
@@ -9,7 +9,6 @@ import org.gradle.api.Task
|
|||||||
import org.gradle.api.plugins.JavaBasePlugin
|
import org.gradle.api.plugins.JavaBasePlugin
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.moduleNameForCompilation
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmTest
|
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmTest
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||||
@@ -27,16 +26,6 @@ open class KotlinJvmTargetConfigurator :
|
|||||||
super<KotlinTargetWithTestsConfigurator>.configurePlatformSpecificModel(target)
|
super<KotlinTargetWithTestsConfigurator>.configurePlatformSpecificModel(target)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun configureCompilations(target: KotlinJvmTarget) {
|
|
||||||
super.configureCompilations(target)
|
|
||||||
|
|
||||||
target.compilations.configureEach {
|
|
||||||
it.compilerOptions.options.moduleName.convention(
|
|
||||||
it.moduleNameForCompilation()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override val testRunClass: Class<KotlinJvmTestRun>
|
override val testRunClass: Class<KotlinJvmTestRun>
|
||||||
get() = KotlinJvmTestRun::class.java
|
get() = KotlinJvmTestRun::class.java
|
||||||
|
|
||||||
|
|||||||
+16
-1
@@ -8,8 +8,13 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
|
||||||
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
|
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPostConfigure
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPreConfigure
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPreConfigure
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationJsCompilerOptionsFromTargetConfigurator
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationJvmCompilerOptionsFromTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinJvmCompilationAssociator
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinJvmCompilationAssociator
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationDependencyConfigurationsFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationDependencyConfigurationsFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationTaskNamesContainerFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationTaskNamesContainerFactory
|
||||||
@@ -57,7 +62,17 @@ class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions,
|
|||||||
preConfigureAction = DefaultKotlinCompilationPreConfigure + { compilation ->
|
preConfigureAction = DefaultKotlinCompilationPreConfigure + { compilation ->
|
||||||
compilation.compileDependencyFiles = project.filesProvider { javaSourceSet.compileClasspath }
|
compilation.compileDependencyFiles = project.filesProvider { javaSourceSet.compileClasspath }
|
||||||
compilation.runtimeDependencyFiles = project.filesProvider { javaSourceSet.runtimeClasspath }
|
compilation.runtimeDependencyFiles = project.filesProvider { javaSourceSet.runtimeClasspath }
|
||||||
}
|
},
|
||||||
|
postConfigureAction = KotlinCompilationImplFactory.PostConfigure.composite(
|
||||||
|
DefaultKotlinCompilationPostConfigure,
|
||||||
|
if (target.platformType == KotlinPlatformType.js || target.platformType == KotlinPlatformType.common) {
|
||||||
|
// JS/Legacy or Common/legacy (KotlinCommonPlugin) targets uses KotlinWithJavaCompilation,
|
||||||
|
// but as they are deprecated - we are ignoring it
|
||||||
|
null
|
||||||
|
} else {
|
||||||
|
KotlinCompilationJvmCompilerOptionsFromTargetConfigurator(target.compilerOptions)
|
||||||
|
}
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return project.objects.newInstance(
|
return project.objects.newInstance(
|
||||||
|
|||||||
+17
@@ -6,6 +6,7 @@
|
|||||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||||
|
|
||||||
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.Dependency
|
import org.gradle.api.artifacts.Dependency
|
||||||
@@ -14,12 +15,14 @@ import org.gradle.api.plugins.JavaPlugin
|
|||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.tasks.SourceSetContainer
|
import org.gradle.api.tasks.SourceSetContainer
|
||||||
import org.gradle.jvm.tasks.Jar
|
import org.gradle.jvm.tasks.Jar
|
||||||
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
import org.jetbrains.kotlin.gradle.dsl.*
|
import org.jetbrains.kotlin.gradle.dsl.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
|
import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
|
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
|
||||||
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
|
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_BUILD_DIR_NAME
|
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_BUILD_DIR_NAME
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.newInstance
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -58,6 +61,20 @@ abstract class KotlinWithJavaTarget<KotlinOptionsType : KotlinCommonOptions, CO
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal val buildDir: Provider<Directory> = layout.buildDirectory.dir(KOTLIN_BUILD_DIR_NAME)
|
internal val buildDir: Provider<Directory> = layout.buildDirectory.dir(KOTLIN_BUILD_DIR_NAME)
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
override val compilerOptions: KotlinJvmCompilerOptions = project.objects
|
||||||
|
.newInstance<KotlinJvmCompilerOptionsDefault>()
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun compilerOptions(configure: KotlinJvmCompilerOptions.() -> Unit) {
|
||||||
|
configure(compilerOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun compilerOptions(configure: Action<KotlinJvmCompilerOptions>) {
|
||||||
|
configure.execute(compilerOptions)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sanitizeFileName(candidate: String): String = candidate.filter { it.isLetterOrDigit() }
|
private fun sanitizeFileName(candidate: String): String = candidate.filter { it.isLetterOrDigit() }
|
||||||
|
|||||||
Reference in New Issue
Block a user