From f29c974c49940052043ba3ea6ef2127d90d22f27 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 30 Mar 2017 14:03:37 -0700 Subject: [PATCH] Run the correct jar name, even if its name was changed. Fixes https://github.com/cbeust/kobalt/issues/355 --- .../kotlin/com/beust/kobalt/archive/Archives.kt | 2 ++ .../plugin/application/ApplicationPlugin.kt | 9 +++++++-- .../kobalt/plugin/packaging/PackagingPlugin.kt | 17 ++++++++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Archives.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Archives.kt index 2c72c7b6..7d2e291f 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Archives.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Archives.kt @@ -16,6 +16,8 @@ class Archives { companion object { @ExportedProjectProperty(doc = "The name of the jar file", type = "String") const val JAR_NAME = "jarName" + @ExportedProjectProperty(doc = "The name of the a jar file with a main() method", type = "String") + const val JAR_NAME_WITH_MAIN_CLASS = "jarNameWithMainClass" private val DEFAULT_STREAM_FACTORY = { os : OutputStream -> ZipOutputStream(os) } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt index 9903e9f4..7cd316e7 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt @@ -8,7 +8,10 @@ import com.beust.kobalt.archive.Archives import com.beust.kobalt.internal.ActorUtils import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.aether.Scope -import com.beust.kobalt.misc.* +import com.beust.kobalt.misc.KFiles +import com.beust.kobalt.misc.KobaltExecutors +import com.beust.kobalt.misc.RunCommand +import com.beust.kobalt.misc.kobaltLog import com.beust.kobalt.plugin.packaging.PackageConfig import com.beust.kobalt.plugin.packaging.PackagingPlugin import com.google.inject.Inject @@ -97,7 +100,9 @@ class ApplicationPlugin @Inject constructor(val configActor: ConfigActor() val outputFiles = arrayListOf() + val jarsWithMainClass = arrayListOf() + allConfigs.forEach { packageConfig -> + packageConfig.jars.forEach { + if (it.attributes.any{ it.first == "Main-Class"}) { + jarsWithMainClass.add(it.name) + } + } + listOf(packageConfig.jars, packageConfig.wars, packageConfig.zips).forEach { archives -> archives.forEach { val files = jarGenerator.findIncludedFiles(packageConfig.project, context, it) @@ -92,6 +100,12 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana } } + if (jarsWithMainClass.any()) { + project.projectProperties.put(Archives.JAR_NAME_WITH_MAIN_CLASS, jarsWithMainClass[0]) + } + project.projectProperties.put(Archives.JAR_NAME, + context.variant.archiveName(project, null, ".jar")) + // Turn the IncludedFiles into actual Files val inputFiles = allIncludedFiles.fold(arrayListOf()) { files, includedFile: IncludedFile -> val foundFiles = includedFile.allFromFiles(project.directory) @@ -119,9 +133,6 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana { -> outMd5 }, { project -> try { - project.projectProperties.put(Archives.JAR_NAME, - context.variant.archiveName(project, null, ".jar")) - fun findFiles(ff: ArchiveGenerator, zip: Zip) : List { val archiveName = ff.fullArchiveName(project, context, zip.name).name return zipToFiles[archiveName]!!