diff --git a/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt b/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt index d939973c..b52d7357 100644 --- a/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt @@ -204,4 +204,19 @@ class Variant(val productFlavorName: String = "", val buildTypeName: String = "" return result } } + + fun archiveName(project: Project, archiveName: String?, suffix: String) : String { + val result: String = + if (isDefault) archiveName ?: project.name + "-" + project.version + suffix + else { + val base = if (archiveName != null) archiveName.substring(0, archiveName.length - suffix.length) + else project.name + "-" + project.version + base + + if (productFlavorName.isEmpty()) "" else "-$productFlavorName" + + if (buildTypeName.isEmpty()) "" else "-$buildTypeName" + + suffix + + } + return result + } } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt index c5dffd03..671d9079 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt @@ -124,7 +124,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana allFiles.add(IncludedFile(From(fullDir), To(WEB_INF), listOf(Glob("**")))) val jarFactory = { os:OutputStream -> JarOutputStream(os, manifest) } - return generateArchive(project, ".war", allFiles, + return generateArchive(project, war.name, ".war", allFiles, false /* don't expand jar files */, jarFactory) } @@ -180,7 +180,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana } val jarFactory = { os:OutputStream -> JarOutputStream(os, manifest) } - return generateArchive(project, ".jar", allFiles, + return generateArchive(project, jar.name, ".jar", allFiles, true /* expandJarFiles */, jarFactory) } @@ -222,21 +222,18 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana private fun generateZip(project: Project, zip: Zip) { val allFiles = findIncludedFiles(project.directory, zip.includedFiles, zip.excludes) - generateArchive(project, ".zip", allFiles) + generateArchive(project, zip.name, ".zip", allFiles) } private val DEFAULT_STREAM_FACTORY = { os : OutputStream -> ZipOutputStream(os) } - private fun generateArchive(project: Project, suffix: String, + private fun generateArchive(project: Project, + archiveName: String?, + suffix: String, includedFiles: List, expandJarFiles : Boolean = false, outputStreamFactory: (OutputStream) -> ZipOutputStream = DEFAULT_STREAM_FACTORY) : File { - val variantSuffix = with(context.variant) { - if (isDefault) "" - else listOf(productFlavorName, buildTypeName).joinToString("-") - } - - val fullArchiveName = listOf(project.name, project.version!!, variantSuffix).joinToString("-") + suffix + val fullArchiveName = context.variant.archiveName(project, archiveName, suffix) val archiveDir = File(libsDir(project)) val result = File(archiveDir.path, fullArchiveName) val outStream = outputStreamFactory(FileOutputStream(result))