is sbt an early prototype of what the OP has in mind? I like sbt because it seems to me that by combining (at least parts) of each of compiling, building, and packaging, the entire workflow is streamlined. So for instance, sbt has an incremental re-compiler which applies a suite of heuristics to minimize the code required to be recompiled and is triggered automatically by any change to the source. In practice this is a huge time saver, but it wouldn&#x27;t work without relying on sbt&#x27;s obviously detailed knowledge of the dependency graph. 
Another example: sbt can also handle package management and deployment, largely via plugins (eg, &quot;native-packager&quot;, &quot;sbt-ghpages&quot;, &quot;assembly&quot; (uber jar), &quot;sbt-elasticbeanstalk&quot;