Welcome! Please see the About page for a little more info on how this works.

+2 votes
in Tools by
edited by

What, if any, thought has been put into the idea of having "standard" build task names for tools.build-based builds?

This could be in the form of actual code in tools.build (or a layer on top of it), or simply an official, published convention. At this stage I'm more interested in whether the general concept is on the radar and if so what it might look like, and less concerned with implementation specifics.

This matters because while allowing authors to name their build tasks as they wish has some (small?) value to those authors, it results in a fragmented experience for the consumers of that build - a consumer cannot make any assumptions about each new tools.build based project they encounter that they wish to build themselves.

While humans can introspect a build script to figure out how to operate it, that's a lot more difficult for downstream build-based automation; including (but not limited to) systems such as jitpack.io, Heroku, etc.

Having started dabbling in tools.build, the current incarnation is feeling quite a bit like the Java build environment circa 2004 or so (right before Maven 1.0 was released). At that time Apache Ant was the dominant build tool, and every single Ant build script was a special snowflake that forced consumers to spend time studying before they could be used effectively. For all its substantial flaws, Maven 1.0 at least solved that one problem. While comparing tools.build to Apache Ant is clearly a massive disservice in many ways (tools.build's scripting language, composability, and dependency management pieces are clearly light-eons ahead of anything Ant ever had), the lack of a well-defined "interface" into tools.build-based build scripts has given me a strong feeling of déjà vu...

1 Answer

0 votes

I don't think there is anything "official" so far. But, if not already, you might want to take a look at Sean Corfield's build-clj

edited by
Yeah I’m using build-clj. In fact it contributed to this line of thinking.

[edit] and just to add some nuance, while build-clj provides standard _implementations_ of common build tasks, it doesn't say anything about standard _interfaces_ to those build tasks (the latter being the focus of my question)