2024 年 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 的下一个版本删除它了。

...