boot-clj:摆脱 "version conflict detected"
boot-clj: get rid of "version conflict detected"
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-time
,所以我猜警告来自一个库,它本身在另一个版本中需要 clj-time。
有没有办法修复它们,或者我总是使用 -q
标志来 "suppress output from boot itself"?这是否会阻止显示其他可能更重要的输出?
示例:
文件/tmp/Whosebug/boot.build
:
(set-env! :dependencies '[[clj-time "0.12.0"]
[joda-time "2.9.4"]])
在终端中:
Borkdude@MBP /tmp/Whosebug $ 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/Whosebug $ 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
所以,boot show -d
会告诉你有效的传递依赖树。 boot show -p
将提供有关冲突的更多详细信息。这里告诉我们依赖joda-time
拉入joda-time 2.9.4
,但是和clj-time
想拉入joda-time 2.9.3
.
有冲突
假设我们不直接依赖 joda-time
,而是依赖于 joda-time 2.9.4
的其他库 foo
。然后,我们可以通过在 clj-time
上使用排除来消除此警告:[clj-time "0.12.0" :exclusions [joda-time]]
在我们的项目中获得 2.9.4
而不会出现警告。
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-time
,所以我猜警告来自一个库,它本身在另一个版本中需要 clj-time。
有没有办法修复它们,或者我总是使用 -q
标志来 "suppress output from boot itself"?这是否会阻止显示其他可能更重要的输出?
示例:
文件/tmp/Whosebug/boot.build
:
(set-env! :dependencies '[[clj-time "0.12.0"]
[joda-time "2.9.4"]])
在终端中:
Borkdude@MBP /tmp/Whosebug $ 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/Whosebug $ 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
所以,boot show -d
会告诉你有效的传递依赖树。 boot show -p
将提供有关冲突的更多详细信息。这里告诉我们依赖joda-time
拉入joda-time 2.9.4
,但是和clj-time
想拉入joda-time 2.9.3
.
假设我们不直接依赖 joda-time
,而是依赖于 joda-time 2.9.4
的其他库 foo
。然后,我们可以通过在 clj-time
上使用排除来消除此警告:[clj-time "0.12.0" :exclusions [joda-time]]
在我们的项目中获得 2.9.4
而不会出现警告。