Features
Intuitive DSL and plug-in architecture
Fast builds
Build file auto-completion from your favorite IDE
A cleaner syntax than Ant, Maven, Gradle, or SBT
For example, here is JCommander's entire build file:
import com.beust.kobalt.*
import com.beust.kobalt.plugin.java.*
import com.beust.kobalt.plugin.packaging.*
import com.beust.kobalt.plugin.publish.*
val jcommander = javaProject {
name = "jcommander"
group = "com.beust"
artifactId = name
version = "1.52"
dependenciesTest {
compile("org.testng:testng:6.9.5")
}
assemble {
mavenJars {
}
}
jcenter {
publish = false
}
}
Design goals
- Completely written in Kotlin: core, plug-ins and build files.
- Auto completion from the IDE.
- Reusing all the good ideas from Gradle, such as the DSL and the wrapper.
- Fast builds.
- Support for all scopes (including
provided
).
- Streamlining the build file, applying "convention over configuration" as much as possible.
- A turnkey solution with all the common plug-ins pre-installed. With Kobalt, you can create a package and upload it to JCenter within ten minutes. See for yourself!
- An agnostic build tool. Kobalt can be used to build Kotlin and Java projects today but it's capable to build anything: any language (JVM or not) or platform (Android, Spring, ...).
The path to Kobalt 1.0
Kobalt is currently in Beta but I'm already using it to build most of my projects. Here are links to a few build files you can inspect to get a feel for what Kobalt enables:
- JCommander.
- TestNG (this build file shows an example of adding a custom task in the build itself).
- Klaxon
- ... and of course, Kobalt itself (this build file demonstrates multi projects and project dependencies).