请在2024 Clojure状态调查!中分享您的观点。

欢迎!请访问关于页面,了解更多有关此工作方式的信息。

0
工具.依赖

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

clj -Srepro -X:deps mvn-pom

根据文档(以及由-Sverbose提供的报告),这应该会忽略我的用户级别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

被选中
 
最佳答案

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

这与-spom选项不同,其中clj和tools.deps协同工作,将类路径上下文从clj传递到pom生成,使类路径修饰符ffect of clj影响到pom生成。

这是一个已知的差距,我们仍在决定最佳方式来传达类路径修饰符选项到mvn-pom程序(有几种选择)。如果您此刻认为这个需求很重要,我建议您现在使用-spom。

by
这很有道理;谢谢!
...