small thing: derivation of clojure version in pom not obvious
Closed this issue · 0 comments
Currently...
I stumbled upon the fact that our pom.xml
is generated with the following dependency on org.clojure/clojure
:
<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.11.1</version>
</dependency>
</dependencies>
But...
Our deps.edn
doesn't depend on clojure.
Diagnosis
The pom version of clojure is brought in by whatever default version of clojure create-basis
brings in. Which, I think, is probably the clojure version tools.build depends on.
When we published our last release, we were using clojure.tools.build 0.9.4 which was depending on clojure 1.11.1.
Building to today (2024-07-31) brings in clojure 1.11.2 which is what tools.build 0.10.5 brings in.
Options
Option 1: Do nothing
- Con: feels a little sloppy
- Con: we are using a non-obvious clojure version default for our tests and release, this can cause confusion for devs of this project (hence this issue).
Option 2: Don't specify clojure dep in our release pom.xml
- Argument: A
native-image
build of a clojure app will have some clojure dep on the classpath.
The app's dep of clojure will override anything we specify, so why should we specify? The clojure dep could be thought of as "provided".
Option 3: Explicitly depend on clojure version
- Pro: explicit
- Pro: is a convention that can be viewed as documenting the minimum version of clojure we support
- Pro: less head-scratching around what version we are actually testing against
Proposal
I think Option 3 makes the most sense. I think explicitly supporting clojure latest makes sense.
(At the time of this writing Clojure 1.11.3). This does not mean graal-build-time won't work with older versions of clojure but means we only actually validate against the current version of clojure.