sbt
A simple build tool
Simple things easy
Hello, world!
ThisBuild / scalaVersion := "3.3.3"
You just need one line of build.sbt
to get started with Scala. Learn more on sbt by Example page.sbt new
Choose from community-maintained Giter8 templates to jump start your project:$ sbt new scala/scala-seed.g8
$ sbt new playframework/play-scala-seed.g8
$ sbt new akka/akka-http-quickstart-scala.g8
$ sbt new http4s/http4s.g8
$ sbt new holdenk/sparkProjectTemplate.g8
Why sbt?
For Scala and Java
sbt is built for Scala and Java projects. It is the build tool of choice for 84.7% of the Scala developers (2023). One of the examples of Scala-specific feature is the ability to cross build your project against multiple Scala versions.
Typesafe and parallel
build.sbt
is a Scala-based DSL to express parallel processing task graph. Typos in build.sbt
will be caught as a compilation error.
Speedy iteration
With Zinc incremental compiler and file watch (~
), edit-compile-test loop is fast and incremental.
Extensible
Adding support for new tasks and platforms (like Scala.js) is as easy as writing build.sbt
. Join 100+ community-maintained plugins to share and reuse sbt tasks.
Beyond the build tool
Previously 21% of the developer's time was spent in redeploying WebLogic application, which was unacceptable. We had to find a solution: some way of productivity to go high. This is one of the reasons why we have Play and Akka. We were really impressed with the hot reload. Now the developers are clearly more productive.
— Keyur Shah, Associate Fellow, Verizon
sbt is a core critical component of Tapad's tech stack. Its use beyond the build tool is largely responsible for the massive efficiency gains that the engineering organization has come to appreciate. sbt and its interactive shell comprise the interface to the standardized application testing, release, and deployment platform. Artifacts and applications are delivered, updated, and scaled across four global data centers.
— Jeffrey Olchovy, CTO, Tapad
You can use sbt-native-packager to build native formats like Docker, sbt-release has nice steps to take care of versioning, sbt-bintray can be used to release to Bintray. There's a pattern: You bring in a plugin. It has some settings. You read the documentations to learn about the setting. And it does its jobs.
— Gabriel Asman, Software Developer, Ovo Energy