sbt

https://www.scala-sbt.org/

The interactive build tool. Define your tasks in Scala. Run them in parallel from sbt's interactive shell.

Snippet from Wikipedia: Sbt (software)

sbt (originally simple build tool, nowadays stands for nothing) is an open-source build tool which can build Java, Scala, and Kotlin projects. It aims to streamline the procedure of constructing, compiling, testing, and packaging applications, libraries, and frameworks. sbt is highly adaptable, permitting developers to customize the build process according to their project's specific needs.

sbt provides a wide range of features to make the process of building and managing Scala projects easy and efficient. Some of the key features include:

  • Dependency management: Through its capacity to automatically download and handle project dependencies, sbt facilitates the usage of external libraries and frameworks.
  • Incremental compilation':' sbt can recompile only parts of the code that have changed, resulting in significant time-saving during the development cycle.
  • Customizable build process: sbt is highly customizable, allowing developers to define custom build settings and configure the build process to align with the unique requirements of their projects.
  • Plugin ecosystem: sbt boasts a plugin ecosystem that enhances its functionality, incorporating extra features such as code quality checks, deployment automation, and test coverage reports. The development and integration of new plugins is fully supported and encouraged.
  • Continuous compilation and testing: With sbt, developers can set the system to automatically recompile and rerun tests whenever a source file is altered.
  • Multi-project builds: For developers working on multiple Scala projects, sbt offers helpful features to manage them within a single build.
  • Interactive shell: sbt comes equipped with an interactive shell, providing developers with a convenient method to execute tasks and commands throughout the development process.
  • Parallel task execution: sbt can execute tasks in parallel, speeding up build times for large projects.
  • Integration with IDEs: To optimize the development experience, sbt integrates smoothly with popular Integrated Development Environments (IDEs), such as IntelliJ IDEA and Visual Studio Code.

sbt is the de facto build tool in the Scala community, used, for example, by the Scala 2 and Scala 3 compilers themselves, Play Framework, and Lichess, a popular chess server. The sbt project is "bootstrapped" — it uses sbt to build itself and considers dogfooding a positive feature.