Kobalt ships with a number of plug-ins that are available to use right away.
The Java and Kotlin plug-ins are extremely similar, the only difference is that you configure a Java project with the javaProject
directive and a Kotlin project with kotlinProject
:
val p = javaProject(wrapper) { name = "kobalt" group = "com.beust" artifactId = name version = "0.1" }
Both these directives allow you to consider an object of type Project
.
A Project
has two mandatory attributes: name
and version
. If you are planning to deploy your project to a Maven repository, you also have to specify its group
(e.g. com.beust
) and artifactId
(e.g. kobalt
).
Additionally, a Project
lets you specify the following parameters:
Once you have at least one project configured, the plug-in lets you invoke the following tasks:
The Packaging plug-in lets you generate various archives for your project: jar, war and zip files, each of them defining a directive by the same name inside the assemble
directive:
val packaging = assemble(kobalt) { jar {} }
If you don't specify a name
for your archive, a default one will be used that contains your project name, version and the corresponding suffix, e.g. kobalt-1.1.jar
or sec-0.2.war
.
All these archives are zip files, so the zip
archive is at the top of the hierarchy and jar
and war
inherit all its attributes, which include name
, include
and exclude
.
All archives let you include and exclude files.
include
has two different forms:
val a = assemble(kobalt) { zip { include("kobaltw", "README") include(from("doc/"), to("html/"), glob("**html")) } }
The first form, with just one parameter, simply copies the file from your directory into the archive, preserving its path. The second form has three parameters which allow you to move the file to a different path into your archive. Note the use of the from
, to
and glob
directives, which are necessary to disambiguate the call.
A jar
is like a zip
with two additional available parameters:
Here is how you generate an executable jar file:
val a = assemble(kobalt) { jar { fatJar = true manifest { attributes("Main-Class", "com.beust.kobalt.KobaltPackage") } } }