I'm trying to use tools.deps inside graalvm. The following error message occurs when running the app:
Error building classpath. Could not find artifact org.eclipse.jetty:jetty-util:jar:${project.version} in central ( )
Ex-data: {:lib org.eclipse.jetty/jetty-util, :coord {:mvn/version ${project.version}, :deps/manifest :mvn, :dependents [org.eclipse.jetty/jetty-http], :parents #{[org.clojure/tools.deps org.eclipse.jetty/jetty-http]}}}
Any suggestions? I suspect there is some resolver class missing of some sort, but I am not sure. There are a bunch of resolver classes in reflect-config.json.
The error only happens with graalvm, not on the REPL.
Project is here: https://github.com/ivarref/finddep
Thanks!As you can see, tools.deps is getting some ${project.version} in the version. Is that in your data or is that coming from some unresolved pom variable?
Thanks Alex. The following works in the REPL:
(apply clojure.tools.deps/calc-basis
(edn/read-string "({:deps {org.clojure/clojure #:mvn{:version \"1.11.2\"}, com.datomic/peer #:mvn{:version \"1.0.7075\"}}, :mvn/repos {\"central\" {:url \" \"}, \"clojars\" {:url \" \"}}} {:resolve-args {}, :classpath-args {}})\n")
But doing that in graalvm at runtime fails with
clojure.lang.ExceptionInfo: Could not find artifact org.apache.activemq:artemis-commons:jar:${project.version} in central ( ) {:lib org.apache.activemq/artemis-commons, :coord {:mvn/version "${project.version}", :deps/manifest :mvn, :dependents [org.apache.activemq/artemis-core-client], :parents #{[com.datomic/peer org.apache.activemq/artemis-core-client]}}}
I'm still stuck, not sure where to look nextSmaller reproduction:
(clojure.tools.deps.extensions/coord-deps
'org.eclipse.jetty/jetty-http
{:mvn/version "9.4.48.v20220622", :deps/manifest :mvn}
:mvn (edn/read-string "({:paths [\"src\"], :deps {org.eclipse.jetty/jetty-http #:mvn{:version \"9.4.48.v20220622\"}}, :aliases {:deps {:replace-paths [], :replace-deps #:org.clojure{tools.deps.cli #:mvn{:version \"0.10.55\"}}, :ns-default clojure.tools.deps.cli.api, :ns-aliases {help clojure.tools.deps.cli.help}}, :test {:extra-paths [\"test\"]}}, :mvn/repos {\"central\" {:url \" \"}, \"clojars\" {:url \" \"}}} {:resolve-args {}, :classpath-args {}})\n"))
; returns
; [[org.eclipse.jetty/jetty-util #:mvn{:version "9.4.48.v20220622"}] [org.eclipse.jetty/jetty-io #:mvn{:version "9.4.48.v20220622"}]] ; in REPL, but
; [[org.eclipse.jetty/jetty-util #:mvn{:version "${project.version}"}] [org.eclipse.jetty/jetty-io #:mvn{:version "${project.version}"}]]
; in graalvmso I believe that somewhere in org.eclipse.aether.internal.impl.DefaultRepositorySystem#readArtifactDescriptor something goes wrong in graalvm (perhaps related to reflect-config)