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

欢迎!更多信息,请看关于页面,了解这是如何工作的。

0
tools.deps

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

clj -Srepro -X:deps mvn-pom

根据文档(以及由-Sverbose提供的报告),这应该忽略我的用户级deps.edn。但我仍然在生成的pom.xml中看到来自用户级deps.edn的依赖项!我还尝试了-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 ""}

我犯了什么错误?为什么尽管-Sverbose如此说,但-Srepro似乎没有做任何事情?我如何将用户级开发依赖项(如cljfmt)排除在pom.xml之外?

1 条回答

+2
 
最佳答案

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

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

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

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