From 84e1e9f8aace6fad212c7f2fc48d414aefac3ce6 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Fri, 4 Aug 2017 19:30:54 +0300 Subject: [PATCH] Change default module name from project.name to archivesBaseName; Get rid of `_main` for the main module. Issue #KT-17355 Fixed --- .../kotlin/gradle/KotlinGradlePluginIT.kt | 24 +++++++++++++++++++ .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 8 ++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 6d4dd5a36b4..087a5f09f5c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -558,4 +558,28 @@ class KotlinGradleIT: BaseGradleIT() { assertNoSuchFile("build/kotlin-classes") } } + + @Test + fun testArchiveBaseNameForModuleName() { + val project = Project("simpleProject", "4.0") + project.setupWorkingDir() + + val archivesBaseName = "myArchivesBaseName" + + val buildGradle = File(project.projectDir, "build.gradle") + buildGradle.appendText("\narchivesBaseName = '$archivesBaseName'") + + // Add top-level members to force generation of the *.kotlin_module files for the two source sets + val mainHelloWorldKt = File(project.projectDir, "src/main/kotlin/helloWorld.kt") + mainHelloWorldKt.appendText("\nfun topLevelFun() = 1") + val deployKotlinSrcKt = File(project.projectDir, "src/deploy/kotlin/kotlinSrc.kt") + deployKotlinSrcKt.appendText("\nfun topLevelFun() = 1") + + project.build("build", "compileDeployKotlin") { + assertSuccessful() + // Main source set should have a *.kotlin_module file without '_main' + assertFileExists("build/classes/kotlin/main/META-INF/$archivesBaseName.kotlin_module") + assertFileExists("build/classes/kotlin/deploy/META-INF/${archivesBaseName}_deploy.kotlin_module") + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index e23c721faab..4d34a1049ba 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -20,6 +20,7 @@ import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.file.SourceDirectorySet import org.gradle.api.logging.Logger +import org.gradle.api.plugins.BasePluginConvention import org.gradle.api.tasks.Input import org.gradle.api.tasks.SourceTask import org.gradle.api.tasks.TaskAction @@ -132,7 +133,12 @@ abstract class AbstractKotlinCompile() : AbstractKo internal var javaOutputDir: File? = null internal var sourceSetName: String by Delegates.notNull() internal val moduleName: String - get() = "${project.name}_$sourceSetName" + get() { + val baseName = project.convention.findPlugin(BasePluginConvention::class.java)?.archivesBaseName + ?: project.name + val suffix = if (sourceSetName == "main") "" else "_$sourceSetName" + return "$baseName$suffix" + } @Suppress("UNCHECKED_CAST") protected val friendTask: AbstractKotlinCompile?