Conflict with dependency 'com.google.code.findbugs:jsr305'

Published: by

Dagger를 사용하기 위해 아래와 같이 최신 버전을 추가했다. 그러나 그래들 동기화 중에 에러가 발생했다.

dependencies {
  	...
	compile 'com.google.dagger:dagger:2.11'
  	annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
  	compile 'com.google.dagger:dagger-android-support:2.11'
  	...
}

에러

Error:Conflict with dependency 'com.google.code.findbugs:jsr305' in project ':app'. Resolved versions for app (3.0.1) and test app (2.0.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.

원인

그래들 에러가 나타나는 원인은, 어디에선가 버전이 다른(3.0.1, 2.0.1) JSR305 라이브러리를 동시에 사용하려고 했기 때문이다.

처리과정

어느 부분에서 오래된 버전(2.0.1)을 사용하고 있는지, Terminal을 통해 알아보자.

./gradlew :app:dependencies

\--- com.android.support.test.espresso:espresso-core:2.2.2
     +--- com.squareup:javawriter:2.1.1
     +--- com.android.support.test:rules:0.5
     |    \--- com.android.support.test:runner:0.5
     |         +--- junit:junit:4.12
     |         |    \--- org.hamcrest:hamcrest-core:1.3
     |         \--- com.android.support.test:exposed-instrumentation-api-publish:0.5
     +--- com.android.support.test:runner:0.5 (*)
     +--- javax.inject:javax.inject:1
     +--- org.hamcrest:hamcrest-library:1.3
     |    \--- org.hamcrest:hamcrest-core:1.3
     +--- com.android.support.test.espresso:espresso-idling-resource:2.2.2
     +--- org.hamcrest:hamcrest-integration:1.3
     |    \--- org.hamcrest:hamcrest-library:1.3 (*)
     +--- com.google.code.findbugs:jsr305:2.0.1
     \--- javax.annotation:javax.annotation-api:1.2

위 내용을 살펴보면 맨 아래에서 위로 두 번째 줄에 com.google.code.findbugs:jsr305:2.0.1 버전이 존재한다. 이것은 espresso-core:2.2.2 내부에 존재하는 버전이다. 다른 부분을(./gradlew :app:dependencies) 살펴보면 Dagger에서 3.0.1 버전을 이미 갖고 있다. 해결하려면, espresso-core:2.2.2에서 2.0.1버전을 사용하지 못하게 막거나(exclude), Dagger에서 3.0.1버전을 사용하지 못하게 막아야 한다. 물론, 최신버전을 사용하는 것을 누구든 권장할 것이다.

해결

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.google.code.findbugs'// 사용하지 못하게 막기
  })
}

즐겁게 개발자자 :)