Skip to content

Commit 3ee65e2

Browse files
authored
fix comparing maven version numbers (#535)
Use org.apache.maven.artifact.versioning/ComparableVersion to parse and compare Maven version numbers.
1 parent 55b71a2 commit 3ee65e2

3 files changed

Lines changed: 36 additions & 43 deletions

File tree

components/maven/deps.edn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{:paths ["src"]
2-
:deps {}
2+
:deps {org.apache.maven/maven-artifact {:mvn/version "4.0.0-rc-3"}}
33
:aliases {:test {:extra-paths []
44
:extra-deps {}}}}

components/maven/src/polylith/clj/core/maven/core.clj

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,9 @@
11
(ns ^:no-doc polylith.clj.core.maven.core
2-
(:require [clojure.string :as str]))
3-
4-
(defn values [val]
5-
(try
6-
(Long/parseLong val)
7-
(catch NumberFormatException _
8-
val)))
9-
10-
(defn as-vals [version]
11-
(when version
12-
(mapv values (str/split (str version) #"\."))))
2+
(:import [org.apache.maven.artifact.versioning ComparableVersion]))
133

144
(defn sort-libs [coord1 coord2 mvn-key]
15-
(let [v1 (-> coord1 mvn-key as-vals)
16-
v2 (-> coord2 mvn-key as-vals)]
5+
(let [v1 (-> coord1 mvn-key ComparableVersion.)
6+
v2 (-> coord2 mvn-key ComparableVersion.)]
177
(if (and v1 v2)
188
(if (< (compare v1 v2) 0)
199
[coord1 coord2]

projects/poly/test/project/poly/poly_workspace_test.clj

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -126,35 +126,37 @@
126126
rows))
127127

128128
(deftest polylith-libs
129-
(is (= [" i "
130-
" m "
131-
" a "
132-
" g "
133-
" e w"
134-
" - s"
135-
" c v w -"
136-
" r a o e"
137-
" c e l r x"
138-
" r a i k p"
139-
" e t s d s l"
140-
" a a d f o h a p o"
141-
" n t e i r e t t a r"
142-
" t o p l - l a o c e"
143-
" library version type KB poly polyx dev default extended q r s e x l p r e r"
144-
" ---------------------------------------------------- ----------- ---------------------- ----------------------------"
145-
" borkdude/edamame 1.4.26 maven 25 x x x - - . . . x . . . . . ."
146-
" clj-commons/fs 1.6.311 maven 12 x x x - - . . . x . . . . . ."
147-
" com.github.liquidz/antq 2.9.1217 maven 52 x x x - - x . . . . . . . . ."
148-
" djblue/portal 0.57.2 maven 1,879 x x x - - . . . . . . x . . ."
149-
" metosin/malli 0.16.3 maven 91 x x x - - . . . . . . . x . ."
150-
" mvxcvi/puget 1.3.4 maven 15 x x x - - . . . . . . . . . x"
151-
" org.clojure/clojure 1.11.4 maven 4,010 x x x - - . . . . . . . . . ."
152-
" org.clojure/tools.deps 0.20.1440 maven 58 x x x - - . . x x . . . . x ."
153-
" org.jline/jline 3.26.3 maven 1,394 x x x - - . . . . . x . . . ."
154-
" org.slf4j/slf4j-nop 2.0.16 maven 4 x x x - - . . . . . . . . . ."
155-
" pjstadig/humane-test-output 0.11.0 maven 7 t - - - - . . . . . . . . . ."
156-
" rewrite-clj/rewrite-clj 1.1.48 maven 74 - - x - - . . . . . . . . . ."
157-
" selmer/selmer 1.12.61 maven 63 x x x - - . x . . . . . . . ."]
129+
(is (= [" i "
130+
" m "
131+
" a "
132+
" g "
133+
" e w"
134+
" - s"
135+
" c v w -"
136+
" r a o e"
137+
" c e l r x"
138+
" r a i k p"
139+
" e t m s d s l"
140+
" a a d f o a h a p o"
141+
" n t e i r v e t t a r"
142+
" t o p l - e l a o c e"
143+
" library version type KB poly polyx dev default extended q r s e x n l p r e r"
144+
" --------------------------------------------------------- ----------- ---------------------- -------------------------------"
145+
" borkdude/edamame 1.4.26 maven 25 x x x - - . . . x . . . . . . ."
146+
" clj-commons/fs 1.6.311 maven 12 x x x - - . . . x . . . . . . ."
147+
" com.github.liquidz/antq 2.9.1217 maven 52 x x x - - x . . . . . . . . . ."
148+
" djblue/portal 0.57.2 maven 1,879 x x x - - . . . . . . . x . . ."
149+
" metosin/malli 0.16.3 maven 91 x x x - - . . . . . . . . x . ."
150+
" mvxcvi/puget 1.3.4 maven 15 x x x - - . . . . . . . . . . x"
151+
" org.apache.maven/maven-artifact 4.0.0-rc-3 maven 61 x x x - - . . . . . x . . . . ."
152+
" org.clojure/clojure 1.11.4 maven 4,010 x x x - - . . . . . . . . . . ."
153+
" org.clojure/tools.deps 0.20.1440 maven 58 x x x - - . . x x . . . . . x ."
154+
" org.jline/jline 3.26.3 maven 1,394 x x x - - . . . . . . x . . . ."
155+
" org.slf4j/slf4j-nop 2.0.16 maven 4 x x x - - . . . . . . . . . . ."
156+
" pjstadig/humane-test-output 0.11.0 maven 7 t - - - - . . . . . . . . . . ."
157+
" rewrite-clj/rewrite-clj 1.1.48 maven 74 - - x - - . . . . . . . . . . ."
158+
" selmer/selmer 1.12.61 maven 63 x x x - - . x . . . . . . . . ."]
159+
158160
(keep-except "clojure2d"
159161
(libs/table (workspace))))))
160162

@@ -1187,6 +1189,7 @@
11871189
"malli.error"
11881190
"malli.util"
11891191
"me.raynes.fs"
1192+
"org.apache.maven.artifact.versioning"
11901193
"org.jline.reader"
11911194
"org.jline.reader.impl"
11921195
"org.jline.terminal"

0 commit comments

Comments
 (0)