2013-10-15 3 views
0

일부 레거시 코드를 새 버전으로 이식하는 중입니다. 1.5x 버전이 1.6x 및 1.7x와 호환되지 않는 특정 모듈 (slf4j)은 내 프로젝트가 의존하는 프로젝트가 클래스 패스에 jar로 포함되어 있습니다. 이러한 문제를 해결할 수있는 방법이 있습니까?maven에서 전이 종속성 제거

+0

그래서 프로젝트는 SLF4J의 1.5.x 버전에 달려있다. 그 맞습니까? – Vidya

+1

예, 1.5x와 역 호환되지 않는 1.6x 및 1.7x 버전을 사용할 계획입니다. 내가 (작업중인 프로젝트의) 전쟁을 할 때마다 전 이적 종속성으로 인해 사용되는 다른 버전으로 인해 존재하는 비 호환성으로 인해 실패합니다. – user1801279

답변

2

가있는 경우 치어 메이븐에서 직접 의존성이 그것을 사용하고 동일한 유물에 어떤 이적 종속성을 생략 할 것이다 예를 들어 여기

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-core</artifactId> 
    <version>2.12.1</version> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.5</version> 
</dependency> 

낙타 코어가있는 전이 의존성 SLF4J-API-1.6.6하지만, Maven은 slf4j-api-1.7.5를 선택할 것입니다.

+0

이게 옳은지 확실하지 않습니다. 동일한 시도했습니다. 내 프로젝트 POM에 slf4j의 최신 버전이 추가되었습니다. 여전히 호환성 문제가 발생합니다. 이것은 sl4j의 경우 일 수도 있지만 확실하게 말할 수는 없습니다. – user1801279

+0

Eclipse에서 쉽게 확인할 수 있습니다. "dependency hierarchy"탭 –

+0

옙 mvn dependency : 트리는 프로젝트에 새 버전을 연결 했더라도 의존성이 여전히 어떻게 몰래 움직 였는지 추론하는 데 사용되었습니다. – user1801279

0

내 문제를 해결하는 방법은 내 프로젝트가 의존하는 프로젝트를 재배포하는 것입니다. 항아리 였기 때문에 필자는 그것을 maven 형식으로 다시 만들고 그 수준에서 모든 전이 의존성을 막기 위해 필요한 제외 구문을 추가해야했습니다. 이것은 모범 사례는 아니지만 제 경우에는 효과가있을 수 있습니다. 나는 프로젝트의 최신 버전이 모든 maven 기반의 제외 태그로 충분해야한다고 생각한다.

관련 문제