2024 State of Clojure 问卷调查! 中分享您的想法。

欢迎!有关如何使用此页面,请参阅关于页面以获取更多信息。

+2
tools.build

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

1 个答案

+1

被选择
 
最佳答案

抱歉,这是一个临时的解决方案,那应该被删除,我现在已经为 tools.build 的下一个版本删除了它。

...