2024 状态 Clojure 调查!中分享您的想法。

欢迎!请参阅关于页面,以了解更多关于如何使用本网站的信息。

0
tools.deps

tools.deps.alpha 并不考虑来自 maven settings.xml 的“localRepository”指令。
根据代码(《https://github.com/clojure/tools.deps.alpha/blob/dae323631f67cfdf1e4769c7a193f7b6373f448d/src/main/clojure/clojure/tools/deps/alpha/util/maven.clj》)本地仓库似乎
硬编码为$HOME/.m2/repository。
是否有覆盖此行为的方法?

1 个答案

+1
回答

您可以在 deps.edn 的根目录处设置 :mvn/local-repo 来更改本地仓库位置。如果需要,这可以与 -Sdeps 结合在命令行上动态设置

clj -Sdeps '{:mvn/local-repo "/foo"}'

评论
谢谢您的回答。
注意:似乎我无法在Windows上让它工作,但我认为是与该操作系统的特定参数有关。我将在WSL上进行测试以确认(或否)。
clj -Sdeps '{:mvn/local-repo "D:/temp/m2repository"}'
构建类路径时出错。类 clojure.lang.Symbol 不能被转换成类 java.lang.String(clojure.lang.Symbol 在未命名模块的 loader 'app' 中;java.lang.String 在 module java.base 的 loader 'bootstrap' 中)
java.lang.ClassCastException: class clojure.lang.Symbol cannot be cast to class java.lang.String (clojure.lang.Symbol is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
       at clojure.tools.deps.alpha.util.maven$make_local_repo.invokeStatic(maven.clj:136)
       at clojure.tools.deps.alpha.util.maven$make_local_repo.invoke(maven.clj:136)
       at clojure.tools.deps.alpha.util.maven$make_session.invokeStatic(maven.clj:195)
       at clojure.tools.deps.alpha.util.maven$make_session.invoke(maven.clj:192)
       at clojure.tools.deps.alpha.extensions.maven$eval1016$fn__1018$fn__1022.invoke(maven.clj:103)
       at clojure.tools.deps.alpha.util.session$retrieve.invokeStatic(session.clj:23)
       at clojure.tools.deps.alpha.util.session$retrieve.invoke(session.clj:14)
       at clojure.tools.deps.alpha.extensions.maven$eval1016$fn__1018.invoke(maven.clj:103)
       at clojure.lang.MultiFn.invoke(MultiFn.java:244)
       at clojure.tools.deps.alpha$expand_deps$children_task__763$fn__765$fn__766.invoke(alpha.clj:372)
       at clojure.tools.deps.alpha.util.concurrent$submit_task$task__500.invoke(concurrent.clj:33)
       at clojure.lang.AFn.call(AFn.java:18)
       at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
       at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
       at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
       at java.base/java.lang.Thread.run(Thread.java:834)
by
我认为这是shell引号差异的问题 - 你可以尝试将其放在你的 deps.edn 中看看是否有效。
by
是的,在Windows上,你会使用

clj -Sdeps '{:mvn/local-repo "D:\\temp\\m2repository"}'
by
我确认,在使用正确转义引号的情况下,它在deps.edn和命令行中可以工作。

Powershell: clj -Sdeps '{:mvn/local-repo ""D:/temp/m2repository""}'

你认为提出一个工具.deps读取maven用户配置(settings.xml)中的localRepository指令的问题有价值吗?
by
我不打算添加这个功能,所以没有。
...