2011-07-04 3 views
10

나는 commons-httpclient [2.0] (컴파일)에 의존하는 프로젝트를 가지고있다.Maven 2 - 테스트와 컴파일시 서로 다른 의존성 버전

jbehave 테스트 - jbehave-core 3.4.5 (테스트)를 작성하고 싶습니다. 이 종속성은 모두 commons-lang에 따라 다르지만 다른 버전 (1.0.1 및 2.5)에 따라 다릅니다. I는 MVN 패키지을 실행할 때

dependency

난 테스트 섹션 [BUID 실패] 얻는다. 평민 - 랭 1.0.1에서 - - 실제로, 더 StringUtils.substringBeforeLast 없다 (...) 메소드 나는 소스 코드 보면서

java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.substringBeforeLast(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 

가 : 확실한 - 플러그인 출력 내 테스트 케이스에 대한 예외가있다 . 왜 maven이 테스트에서 jbehave-core가 아닌 commons-httpclient (컴파일)의 commons-lang을 사용합니까?

나는이 상충하는 의존성을 commons-httpclient에서 제외 할 수 없으므로 컴파일 타임에 있어야합니다.

어떻게 해결할 수 있습니까? - 테스트시에는 commons-lang 2.5 버전, 컴파일시에는 1.0.1 버전.

답변

6

<dependency> 개의 태그를 서로 다른 버전 및 범위로 정의하려고합니다. 테스트에는 종속성 내부에 <scope>test</scope> 태그를 사용하고 컴파일에는 <scope>compile</scope> 태그를 사용하십시오.

+0

테스트 아니요 테스트

+0

테스트가 작동했습니다. 감사. m2eclipse 플러그인에서 나는 commons-httpclient 하위 카테고리에서 '(마찰 마녀 2.5) [compile]'을 찾지 못했지만 아마도 m2eclipse 문제 일 것입니다. – Xeon

+0

이것은 저에게 효과가 없으며 이유를 모르겠습니다 - http : // stackoverflow .com/questions/9364511/maven-different-dependency-in-test –

관련 문제