如果您尝试使用涉及 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
下)中删除该文件似乎解决了问题,并且没有 看起来 损坏任何其他内容...