2017-11-15 2 views
-1

저는 Maven을 처음 사용하기 때문에 아직 어떻게 작동하는지 이해하려고합니다. 도서관 에 의존하는 B이 있습니다. 따라서 B의 종속성으로 추가됩니다. 프로젝트 B과 에 의존하는 C 프로젝트가 있습니다. 나는 C의 POM 같이 B 라이브러리를 추가하면 그래서 다음 전이 의존성이 작동해야하며, C는 볼 수 A. C -> B -> 내 동료가 C의 POM에 다음과 같은 것을 쓴 참조하십시오Maven Transitive 의존성 흐름은 어떻게 작동합니까?

:

<dependency> 
     <groupId>B</groupId> 
     <artifactId>B</artifactId> 
     <version>1.0</version> 
     <exclusions> 
      <exclusion> 
       <groupId>C</groupId> 
       <artifactId>C</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>C</groupId> 
     <artifactId>C</artifactId> 
     <version>1.0</version> 
    </dependency> 
</dependencies> 

B 's pom을 살펴보면 포장 정보가 없음을 알았습니다. 그래서 그것은 단지도 전쟁도 아닙니다. 그것은 단지 라이브러리로 사용되고 있습니다.

내 질문은 라이브러리 (B) 종속 모듈이 종속성으로 라이브러리 (B)를 사용중인 프로젝트 (C)에 전이 종속성으로 전달되는지 여부입니다.

+1

Artifact를 제외하기 만하면 다시 추가 할 수 없습니다. 동료가 뭔가 잘못하고 있습니다. 특히 그가이 일을하는 이유를 설명 할 설명이없는 경우입니다. –

+0

내 질문을 업데이트했습니다. 다시 확인해 주시겠습니까? –

+1

나는 그 질문에 대답했지만 그 코드는 그 질문과 일치하지 않는다. 모든 것을 일관되게 만들기 위해 소스를 편집해야합니다. –

답변

0

예 : Maven이 전체 종속성 트리를 확인한 다음 이에 따라 프로젝트를 구성합니다. 프로젝트 CB을 포함 할 때 당신은 목표 dependency:tree

이 해상도를 볼 수 있습니다, Maven은 읽어 이적으로 포함 Bpom.xml. Maven은이 트리를 평평하게 만들고, 충돌이 있다면이를 해결하고, 프로젝트에 대한 두 가지 의존성을 설정합니다. 그들은 통합 된 것처럼

프로젝트 C 지금 B에 액세스 할 수 있습니다.


참고 이클립스에서 Maven 플러그인 꽤 똑똑하고 JAR을 사용하기로 결정하거나, 그것이 당신의 작업 공간에서 사용할 수있는 경우 프로젝트 파일을 직접 (당신은 그것을 사용하는 경우). 이것은 약간의 혼란을 가져올 수 있지만 괜찮습니다. 그것은 작동합니다.