For me the key features of SBT are:
- Fast compilation (faster than
fsc
).
- Continuous compilation/testing: the command
~test
will recompile and test you project everytime you save a modification.
- Cross-compilation and cross-publishing, across several scala versions.
- Automatically retrieving dependencies with the correct scala version compatibility.
The downsides are:
- A hieroglyphic syntax that tends to discourage new users (especially if they come from Java)
- No easy way to define a "task": if you need a special build procedure, you will need to either find a plugin, or write a plugin yourself.