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 在由 'app' 加载器加载数据的未知模块中;java.lang.String 在由 'bootstrap' 加载器加载的 java.base 模块中)
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""}'

你认为是否有必要把一个问题提出,使得 tools.deps 读取 maven 用户配置(settings.xml)中的 localRepository 指令吗?
by
我目前没有计划添加,所以没有
...