What is SBT
SBT at its core is task execution engine written and configured in Scala.
When you tell SBT "run this task" it will run not only the task, but all the required tasks that may be necessary to perform this task and reads all the settings that are required by the task itself. These task and setting dependencies are naturally modeled by a graph that SBT executes. We will call this graph build.
SBT has four core primitives that help you structure and configure your build. We will cover each of them in a separate block
Settings
- static values to configure aspects of your build. For instance the buildversion
Tasks
- dynamic generated values. For instance the compiled classesScopes
/Configurations
- namespaces for settings or tasksProjects
- ability to structure your build in different separated projects
In the next section we will setup a basic build to see all these concepts in action and learn how to apply them.