2016-10-08 15 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-timejoda-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을 얻을 수 있습니다.

+0

나는 아직도 그것을 얻지 못하고있다. 부팅 show -d는 예를 들어 인쇄합니다. 트리에서 한 번만 cljs 시간 : [clj-time "0.12.0"] .. 0.8.0을 취하는 경고는 어디에 있습니까? + 제외 란 무엇입니까? –