步骤
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"]}}。