如果您尝试使用涉及 tools.deps.alpha
的别名调用 create-basis
,您将得到以下异常
Execution error (ExceptionInfo) at clojure.tools.deps.alpha.extensions.maven/get-artifact (maven.clj:133).
Could not find artifact org.clojure:tools.deps.alpha:jar:${project.version} in central (https://repo1.maven.org/maven2/)
这是因为 tools.build
包含一个包含该字符串的 deps.edn
的源版本,而不是版本号
./tools.build/src/main/resources/clojure/tools/deps/deps.edn
:deps {:extra-deps {org.clojure/tools.deps.alpha {:mvn/version "${project.version}"}}}
以下是最小化重现情况的示例:在一个空目录中
;; deps.edn
{:aliases
{:build
{:deps {io.github.clojure/tools.build {:git/tag "v0.1.6" :git/sha "5636e61"}}
:ns-default build}}}
;; build.clj
(ns build
(:require [clojure.tools.build.api :as b]))
(defn bug [_]
(b/create-basis {:aliases [:deps]}))
然后执行
clojure -T:build bug
鉴于 tools.build
已经明确依赖于 t.d.a 如下,我不明白为什么它还需要在 resources
树中包含 t.d.a 的 deps.edn
源代码的副本?
org.clojure/tools.deps.alpha {:mvn/version "0.12.1003"}
从检出的 tools.build
(在 ~/.gitlibs/libs
下)中删除该文件似乎可以解决这个问题,并且看起来没有 破坏 任何其他东西...