Skip to main content

Simple things easy

Hello, world!

ThisBuild / scalaVersion := "3.3.1"
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.


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