Fork me on GitHub

depstar 2.0-in-progress now supports :compile-ns to specify a vector of namespaces to compile even for (thin) JAR files -- someone was asking for that feature a while back (sorry, I don't remember who). I've also added support for :compile-ns :all 🙂


I'm continuing to work on depstar (since I'm off work today -- having GitHub sponsorship is more motivating than I would have imagined 😉 ) and I'm looking at the implications of being able to override group, artifact, and/or version when you build a JAR file. Since you may well be building a library for deployment, it seems likely that the pom.xml file used for the JAR will also be the pom.xml file used for the deploy which means that you'll want it to match: so what goes into the JAR and what goes up to Clojars etc should be the same. In addition, if you have a VCS <tag> in your pom.xml, it's probably going to be the same as the <version> with just v in front of it (maybe? that seems to be the most common convention?). So it seems that if you override any of :group-id, :artifact-id, or :version, you would need depstar to actually update your pom.xml file so that any deploy step also gets the same group/artifact and version. How do folks feel about depstar updating the pom.xml file if you specify overridden values for any of those three fields?


Now that depstar will be working as a "tool" (with :replace-deps), it is depending on tools.deps.alpha (and a few other things) so it could also invoke the equivalent of the CLI's -Spom operation to create/sync pom.xml based on deps.edn. It looks fairly straightforward but I'm not sure how stable that aspect of the t.d.a API is. Would that be something that folks would like depstar to be able to do automatically for you? [The danger here is that depstar would be complecting functional steps that should probably be kept separate, but these are opt-in operations: if you don't override the group/artifact or version, it wouldn't update pom.xml and the auto-create/sync would also be opt-in]


Alex said that sync-pom API was "relatively stable" so I've gone ahead and implemented a :sync-pom true option that runs the equivalent of clojure -Spom but using the same calculated project basis that depstar uses to build the JAR file (so it respects :repro true/false and any :aliases you specify).


After lunch, I'll revisit the awful log4j2 plugins cache file stuff...