2016-10-08 2 views
1

загрузки CLJ показывает много предупреждений о версии конфликтов при запуске: Они выглядят так:загрузки 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 

Я не совсем понимая, почему иногда первая версия ниже другой, а иногда наоборот. Также кажется, что я не могу повлиять на большинство из них. Например, в моем проекте мне потребовалось clj-time в версии 0.12.0, поэтому, я думаю, предупреждение появляется из библиотеки, которая сама требует clj-time в другой версии.

Есть ли способ исправить их, или я всегда буду использовать флаг -q для того, чтобы «подавить выход из самой загрузки»? Может быть, это может помешать отображению другого, возможно, более важного результата?

+1

Вы пытались использовать флаг '-d'? – guijob

+0

Вы хотите вручную добавить недостающие зависимости? –

ответ

2

Пример:

Файл /tmp/stackoverflow/boot.build:

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

В терминале:

[email protected] /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"] 
[email protected] /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 

Так, boot show -d покажет вам эффективное дерево транзитивной зависимости. boot show -p подробно расскажет о конфликтах. Здесь он сообщает нам, что зависимость от joda-time тянет joda-time 2.9.4, но это конфликтует с clj-time, желающим вытащить joda-time 2.9.3.

Предположим, мы не зависели от joda-time напрямую, но некоторая другая библиотека foo, что зависело от joda-time 2.9.4. Мы могли бы избавиться от этого предупреждения, используя исключение на clj-time: [clj-time "0.12.0" :exclusions [joda-time]], чтобы получить 2.9.4 в нашем проекте без предупреждения.

+0

Я все еще не понимаю. boot show -d отпечатки, например. cljs-time только один раз в дереве: [clj-time "0.12.0"] .. Где предупреждение, берущее 0.8.0? + Что вы подразумеваете под исключениями? –

Смежные вопросы