Clojure bootclj:摆脱;“检测到版本冲突”;

Clojure bootclj:摆脱;“检测到版本冲突”;,clojure,boot-clj,Clojure,Boot Clj,boot clj在启动时显示了很多关于版本冲突的警告:它们如下所示: Warning: version conflict detected: org.clojure/clojure version changes from 1.5.1 to 1.8.0 Warning: version conflict detected: clj-time version changes from 0.8.0 to 0.12.0 Warning: version conflict detected: riddl

boot clj在启动时显示了很多关于版本冲突的警告:它们如下所示:

Warning: version conflict detected: org.clojure/clojure version changes from 1.5.1 to 1.8.0
Warning: version conflict detected: clj-time version changes from 0.8.0 to 0.12.0
Warning: version conflict detected: riddley version changes from 0.1.7 to 0.1.12
Warning: version conflict detected: org.codehaus.plexus/plexus-utils version changes from 2.0.7 to 2.0.6
Warning: version conflict detected: org.clojure/tools.namespace version changes from 0.2.11 to 0.2.10
Warning: version conflict detected: com.fasterxml.jackson.core/jackson-core version changes from 2.1.1 to 2.3.2
我不太明白为什么有时第一个版本比另一个版本低,有时反之亦然。看起来我也无法影响他们中的大多数人。例如,在我的项目中,我需要版本
0.12.0
中的
clj时间,因此我猜警告来自一个库,它本身在另一个版本中需要clj时间

有没有办法修复它们,或者我会一直使用
-q
标志来“抑制启动本身的输出”?这可能会阻止显示其他可能更重要的输出吗?

示例:

文件
/tmp/stackoverflow/boot.build

(set-env! :dependencies '[[clj-time "0.12.0"]
                          [joda-time "2.9.4"]])
在终端中:

Borkdude@MBP /tmp/stackoverflow $ boot show -d
Warning: version conflict detected: joda-time version changes from 2.9.3 to 2.9.4
Warning: version conflict detected: joda-time version changes from 2.9.3 to 2.9.4
[clj-time "0.12.0"]
└── [org.clojure/clojure "1.8.0"]
[joda-time "2.9.4"]
Borkdude@MBP /tmp/stackoverflow $ boot show -p
Warning: version conflict detected: joda-time version changes from 2.9.3 to 2.9.4
Warning: version conflict detected: joda-time version changes from 2.9.3 to 2.9.4
[✔] joda-time
    ✔ 2.9.4
      joda-time
    ✘ 2.9.3
      clj-time
因此,
bootshow-d
将告诉您有效的可传递依赖关系树<代码>引导显示-p
将提供有关冲突的更多详细信息。在这里,它告诉我们对
joda-time
的依赖性引入了
joda-time 2.9.4
,但它与
clj-time
想要引入
joda-time 2.9.3
的冲突


假设我们不直接依赖于
joda时间
,而是依赖于
joda时间2.9.4
的另一个库
foo
。然后,我们可以通过在
clj-time
[clj-time“0.12.0”:exclusions[joda-time]]
上使用排除来消除此警告,从而在项目中无警告地获得
2.9.4

您是否尝试使用
-d
标志?您的意思是手动添加缺少的依赖项?我仍然不明白。引导显示-d在树中仅打印一次,例如cljs时间:[clj时间“0.12.0”]。。0.8.0的警告在哪里?+你说的除外责任是什么意思?