请参与 2024 年 Clojure 状态调查!(点击参与)

欢迎!请参阅关于 页面,了解有关此功能的更多信息。

0
tools.deps

我有一个用户级别的 deps.edn 文件和一个项目级别的 deps.edn 文件。我想为我的项目生成一个 pom.xml 文件,该文件忽略用户级别 deps.edn 中的任何依赖项。我现在的命令是

clj -Srepro -X:deps mvn-pom

根据文档描述(以及由 -Sverbose 提供的报告),这应该会忽略我的用户级 deps.edn。但我仍然看到来自用户级 deps.edn 的依赖项出现在生成的 pom.xml 中!我尝试了 -Sforce 选项,但没有变化。无论我使用 -Spom 还是 -X:deps mvn-pom,似乎 -Srepro 选项都被忽略了。

关于我的环境的更多详细信息

$ clj -Srepro -Sverbose -Sdescribe
version      = 1.10.1.697
install_dir  = /usr/local/Cellar/clojure/1.10.1.697
config_dir   = /Users/jming/.clojure
config_paths = /usr/local/Cellar/clojure/1.10.1.697/deps.edn deps.edn
cache_dir    = .cpcache
cp_file      = .cpcache/1655984260.cp

{:version "1.10.1.697"
 :config-files ["/usr/local/Cellar/clojure/1.10.1.697/deps.edn" "deps.edn" ]
 :config-user ""
 :config-project "deps.edn"
 :install-dir "/usr/local/Cellar/clojure/1.10.1.697"
 :config-dir "/Users/jming/.clojure"
 :cache-dir ".cpcache"
 :force false
 :repro true
 :main-aliases ""
 :repl-aliases ""}

我错在哪里?为什么 -Srepro 似乎没有任何作用,尽管 -Sverbose 提示会有作用?我该如何将用户级的开发依赖项(如 cljfmt)从 pom.xml 中排除?

1 回答

+2

选定
 
最佳答案

maven-pom 程序是由 clj 运行的,clj 的类路径修改器选项会影响 maven-pom 程序的类路径,而不是生成 pom.xml 中表示的依赖项集。

这不同于 -Spom 选项,其中 clj 和 tools.deps协同工作,将类路径上下文从 clj 传递到 pom 生成过程,使得类路径修改器通过 clj 影响pom生成。

这是一个已知的问题,我们仍在决定最佳方式将类路径修饰器选项传递给 mvn-pom 程序(有几种选择)。如果您现在认为这一要求很重要,我建议您现在使用 -Spom。

by
有道理;谢谢!
...