A typed, composable configuration system for sbt
sbt is a build tool written in Scala and configured in Scala. One goal of sbt is to provide a default build by convention, while being extensively configurable. Transitioning from convention to customization should be smooth, so that only the unique aspects of the build need to be defined. Towards this goal, sbt 0.9 introduces a new typed, composable configuration system.
Important elements of the new system include first class overriding and scoping of settings and delegating settings to other scopes. First class settings allow relationships between settings, such as building up paths or defining task inputs, to be declared once and used in different contexts with minimal effort. Scoping and delegation enable configuration at the granularity of the whole build, a project, a configuration, or a single task. The new task system integrates with this configuration system to uniformly define the execution and configuration graphs of a build.