步骤
1) 创建 {{project.clj}} 文件
(defproject foo "1.0.0" :dependencies [[org.clojure/clojurescript "1.10.439"]] :pedantic? :abort)
2) 运行 {{lein deps}}。
实际情况: 由于依赖冲突而失败
`
找到了可能的令人困惑的依赖关系
[org.clojure/clojurescript "1.10.439"] -> [com.google.javascript/closure-compiler-unshaded "v20180805"] -> [com.google.errorprone/error_prone_annotations "2.0.18"]
覆盖
[org.clojure/clojurescript "1.10.439"] -> [com.google.javascript/closure-compiler-unshaded "v20180805"] -> [com.google.guava/guava "25.1-jre"] -> [com.google.errorprone/error_prone_annotations "2.1.3"]
考虑使用以下排除项
[org.clojure/clojurescript "1.10.439" :exclusions [com.google.errorprone/error_prone_annotations]]
[org.clojure/clojurescript "1.10.439"] -> [com.google.javascript/closure-compiler-unshaded "v20180805"] -> [com.google.code.findbugs/jsr305 "3.0.1"]
覆盖
[org.clojure/clojurescript "1.10.439"] -> [com.google.javascript/closure-compiler-unshaded "v20180805"] -> [com.google.guava/guava "25.1-jre"] -> [com.google.code.findbugs/jsr305 "3.0.2"]
考虑使用以下排除项
[org.clojure/clojurescript "1.10.439" :exclusions [com.google.code.findbugs/jsr305]]
由于 :pedantic? :abort 而终止
`
预期的结果: 成功。
我们经常使用 {{:pendatic? abort}} 设置,并且在提高 CLJS 版本后,必须将冲突修复添加到所有 {{project.clj}} 文件中。
根本问题是出在 {{com.google.javascript/closure-compiler-unshaded}} 工件中,因此我在 https://github.com/google/closure-compiler/issues/2805 中进行了注释。但在修复之前,最好将一些解决方案包含到未来的 ClojureScript 工件中。例如,要求在 CLJS 的依赖项中显式包含
`
} 和 {{[com.google.errorprone/error_prone_annotations "2.3.2"]}}。