diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt index 35cefc90a50..2944e3ff7a6 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt @@ -554,4 +554,42 @@ class CompilerOptionsProjectIT : KGPBaseTest() { } } } + + @DisplayName("KT-61303: Multiplatform/Android module name is changed") + @AndroidGradlePluginTests + @GradleAndroidTest + fun mppAndroidModuleNameCompilerOptionsDsl( + gradleVersion: GradleVersion, + agpVersion: String, + jdk: JdkVersions.ProvidedJdk + ) { + project( + projectName = "multiplatformAndroidSourceSetLayout2", + gradleVersion = gradleVersion, + buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG , androidVersion = agpVersion), + buildJdk = jdk.location + ) { + buildGradleKts.appendText( + //language=Groovy + """ + | + |kotlin { + | androidTarget { + | compilerOptions { + | moduleName.set("my-custom-module") + | } + | } + |} + | + """.trimMargin() + ) + + build(":compileGermanFreeDebugKotlinAndroid") { + assertCompilerArguments( + ":compileGermanFreeDebugKotlinAndroid", + "-module-name my-custom-module_germanFreeDebug" + ) + } + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt index e7fa5fa534e..55c510b7c24 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt @@ -110,12 +110,7 @@ internal open class BaseKotlinCompileConfig : AbstractKotl task.parentKotlinOptions.orNull?.moduleName ?: compilationInfo.moduleName }) - // In case of 'org.jetbrains.kotlin.jvm' and 'org.jetbrains.kotlin.android' plugins module name will be pre-configured - if (ext !is KotlinJvmProjectExtension && ext !is KotlinAndroidProjectExtension) { - task.compilerOptions.moduleName.convention(providers.provider { compilationInfo.moduleName }) - } else { - task.nagTaskModuleNameUsage.set(true) - } + task.nagTaskModuleNameUsage.value(true).disallowChanges() } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/ProjectCompilerOptionsTests.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/ProjectCompilerOptionsTests.kt index 6fceb58dbb7..ccb83c4530d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/ProjectCompilerOptionsTests.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/ProjectCompilerOptionsTests.kt @@ -308,6 +308,20 @@ class ProjectCompilerOptionsTests { assertEquals("2.0", project.multiplatformExtension.sourceSets.getByName("commonTest").languageSettings.languageVersion) } + @Test + fun testJvmModuleNameInMppIsConfigured() { + val project = buildProjectWithMPP() + project.runLifecycleAwareTest { + with(multiplatformExtension) { + jvm { + compilerOptions.moduleName.set("my-custom-module-name") + } + } + } + + assertEquals("my-custom-module-name", project.kotlinJvmTask("compileKotlinJvm").compilerOptions.moduleName.orNull) + } + private fun Project.kotlinNativeTask(name: String): KotlinCompilationTask = tasks .named>(name) .get()