Savant Build System
A modern, dependency-aware build system for Java
$ curl -sL savantbuild.org/install | bash
Fast Builds
Groovy DSL build files that are simple and declarative. No painful plugin management.
Dependency Management
Fully SemVer compliant. Handles the most complex dependency graphs with ease.
Plugin System
Plugins provide reusable logic without injecting targets. You control the build flow.
Build files are simple
project(group: "org.example",
name: "my-app",
version: "1.0.0",
licenses: ["ApacheV2_0"])
java = loadPlugin(
id: "org.savantbuild.plugin:java:1.0.0")
java.settings.javaVersion = "17"
target(name: "compile",
description: "Compiles the project") {
java.compile()
}
target(name: "test",
description: "Runs the tests",
dependsOn: ["compile"]) {
java.test()
}
$ sb compile
Compiling [main] sources
Compiling [test] sources
$ sb test
Running tests
All 42 tests passed
$ sb jar
Building [build/jars/my-app-1.0.0.jar]
What is Savant?
Savant is a modern build tool that uses a Groovy DSL for the build files. Savant is fully SemVer compliant and handles the most complex dependency graphs easily. Savant uses a plugin approach to quickly add complex build logic to a project.
The main difference between Savant and other build systems is that Savant does not allow plugins to add targets to the build. This decision makes Savant declarative and simplifies the entire system by removing the need to manage inter-plugin dependencies (i.e. the JUnit plugin depends on the Java plugin).
If you are interested in learning more about this design decision, check out the Plugin Doc Page