A modern, versatile build system

Features

Build file auto-completion in your IDE

Clean, minimal syntax for build files

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 {
        }
    }

    bintray {
        publish = false
    }
}

This build file also includes a directive to upload your artifacts to Bintray automatically.

Incremental tasks

Most of Kobalt's core tasks are incremental, which means that if you run them without having changed anything, they will be skipped. The support for incremental tasks is also trivial to add for plug-in developers, which guarantees that your builds with Kobalt will always be as fast as they can be.

Intuitive plug-in architecture

Kobalt's plug-in architecture is heavily inspired from other successful plug-in architectures such as Eclipse and IDEA. Thanks to Kotlin's static type safety, writing plug-ins for Kobalt is both flexible and intuitive, with a minimum of boiler plate. See the Kobalt plug-in development documentation for more details.

Status

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: