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 66fe50e1..41743f8a 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 @@ -21,6 +21,8 @@ class Archives { private val DEFAULT_STREAM_FACTORY = { os : OutputStream -> ZipOutputStream(os) } + fun defaultArchiveName(project: Project) = project.name + "-" + project.version + fun generateArchive(project: Project, context: KobaltContext, archiveName: String?, diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Jar.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Jar.kt index fbbf23a0..f8a47848 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Jar.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Jar.kt @@ -1,11 +1,14 @@ package com.beust.kobalt.archive +import com.beust.kobalt.api.Project import com.beust.kobalt.api.annotation.Directive /** * A jar is exactly like a zip with the addition of a manifest and an optional fatJar boolean. */ -open class Jar(override var name: String? = null, var fatJar: Boolean = false) : Zip(name), AttributeHolder { +open class Jar(override val project: Project, + override var name : String = Archives.defaultArchiveName(project) + ".jar", + var fatJar: Boolean = false) : Zip(project, name), AttributeHolder { @Directive fun manifest(init: Manifest.(p: Manifest) -> Unit) : Manifest { val m = Manifest(this) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/War.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/War.kt index c98ebb70..295a1987 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/War.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/War.kt @@ -1,8 +1,10 @@ package com.beust.kobalt.archive +import com.beust.kobalt.api.Project import com.beust.kobalt.glob -class War(override var name: String? = null) : Jar(name), AttributeHolder { +class War(override val project: Project, override var name: String = Archives.defaultArchiveName(project) + ".war") + : Jar(project, name), AttributeHolder { init { include(from("src/main/webapp"),to(""), glob("**")) include(from("kobaltBuild/classes"), to("WEB-INF/classes"), glob("**")) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Zip.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Zip.kt index 93178c03..61237291 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Zip.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Zip.kt @@ -2,12 +2,13 @@ package com.beust.kobalt.archive import com.beust.kobalt.Glob import com.beust.kobalt.IFileSpec +import com.beust.kobalt.api.Project import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.misc.From import com.beust.kobalt.misc.IncludedFile import com.beust.kobalt.misc.To -open class Zip(open var name: String? = null) { +open class Zip(open val project: Project, open var name: String = Archives.defaultArchiveName(project) + ".zip") { val excludes = arrayListOf() @Directive 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 720b20ac..96ce3ee4 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt @@ -5,7 +5,6 @@ import com.beust.kobalt.api.* import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Task import com.beust.kobalt.archive.Archives -import com.beust.kobalt.archive.Jar import com.beust.kobalt.internal.ActorUtils import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.misc.KFiles @@ -66,14 +65,8 @@ class ApplicationPlugin @Inject constructor(val configActor: ConfigActor, jarName: String): Boolean { - packages.forEach { pc -> - (pc.jars as List).forEach { jar -> - if ((jar.name == null || jar.name == jarName) && jar.fatJar) { - return true - } - } - } - return false + val foundJar = packages.flatMap { it.jars }.filter { jarName.endsWith(it.name) } + return foundJar.size == 1 && foundJar[0].fatJar } // IRunContributor 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 3b1dd5b9..bccdf918 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt @@ -183,19 +183,19 @@ class PackageConfig(val project: Project) : AttributeHolder { } @Directive - fun jar(init: Jar.(p: Jar) -> Unit) = Jar().apply { + fun jar(init: Jar.(p: Jar) -> Unit) = Jar(project).apply { init(this) jars.add(this) } @Directive - fun zip(init: Zip.(p: Zip) -> Unit) = Zip().apply { + fun zip(init: Zip.(p: Zip) -> Unit) = Zip(project).apply { init(this) zips.add(this) } @Directive - fun war(init: War.(p: War) -> Unit) = War().apply { + fun war(init: War.(p: War) -> Unit) = War(project).apply { init(this) wars.add(this) }