Change default module name from project.name to archivesBaseName;

Get rid of `_main` for the main module.

Issue #KT-17355 Fixed
This commit is contained in:
Sergey Igushkin
2017-08-04 19:30:54 +03:00
parent 239943867b
commit 84e1e9f8aa
2 changed files with 31 additions and 1 deletions
@@ -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")
}
}
}
@@ -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<T : CommonCompilerArguments>() : 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<T>?