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位于由loader 'bootstrap'加载的java.base模块中)。
java.lang.ClassCastException:class clojure.lang.Symbol无法转换为class java.lang.String(clojure.lang.Symbol位于没有名称的模块中,由loader 'app'加载;java.lang.String位于由loader 'bootstrap'加载的java.base模块中)
 在 clojure.tools.deps.alpha.util.maven$make_local_repo.invokeStatic(maven.clj:136)
 在 clojure.tools.deps.alpha.util.maven$make_local_repo.invoke(maven.clj:136)
 在 clojure.tools.deps.alpha.util.maven$make_session.invokeStatic(maven.clj:195)
 在 clojure.tools.deps.alpha.util.maven$make_session.invoke(maven.clj:192)
 在 clojure.tools.deps.alpha.extensions.maven$eval1016$fn__1018$fn__1022.invoke(maven.clj:103)
 在 clojure.tools.deps.alpha.util.session$retrieve.invokeStatic(session.clj:23)
 在 clojure.tools.deps.alpha.util.session$retrieve.invoke(session.clj:14)
 在 clojure.tools.deps.alpha.extensions.maven$eval1016$fn__1018.invoke(maven.clj:103)
 在 clojure.lang.MultiFn.invoke(MultiFn.java:244)
 在 clojure.tools.deps.alpha$expand_deps$children_task__763$fn__765$fn__766.invoke(alpha.clj:372)
 在 clojure.tools.deps.alpha.util.concurrent$submit_task$task__500.invoke(concurrent.clj:33)
 在 clojure.lang.AFn.call(AFn.java:18)
 在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
 在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 在 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""}'

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