Boot and deps.edn
At some point, we all decided that scripting builds with executable code was a bad idea, so we tossed out makefiles in favor of specifying our builds in a data file (
project.clj, etc) and having a build tool do the heavy lifting. These data files could be leveraged by IDEs and other tools. When projects inevitably need to do things their build tool couldn't anticipate, they use plugins or bash scripts in order to...script their build with executable code. Oops.
The truth is, we never stopped scripting builds, we just made it more annoying. In Clojure land, the things Leiningen can't do just end up in a plugin or an ad hoc bash script. To make matters worse, the
project.clj format isn't even technically static data, because it is very willing to execute code. It is the worst of both worlds: more restrictive and idiosyncratic than normal code,