SBT is a build tool made especially for Scala-based development. SBT follows Maven-based naming conventions and declarative dependency management.
SBT provides the following enhancements over Maven:
- Dependencies are in the form of key-value pairs in the build.sbt file, as opposed to the pom.xml file in Maven
- It provides a shell that makes it very handy to perform build operations
- For simple projects without dependencies, you do not even need the build.sbt file
In the build.sbt file, the first line is the project definition:
lazy val root = (project in file("."))
Each project has an immutable map of key-value pairs. This map is changed by the settings in SBT, as follows:
lazy val root = (project in file(".")).
settings(
name := "wordcount"
)
Every change in the settings field leads to a new map, as it's an immutable map.