2013-04-25 5 views
2

pom 파일에 두 개의 종속성 만있는 모듈을 정의하지만 생성 된 .classpath 파일 (mvn eclipse : eclipse 사용)은 다른 종속성도 포함합니다.paven 파일에 종속성을 추가하는 Maven

이 pom에 추가 된 모듈의 종속성을 확인했지만 모든 모듈이 추가되지는 않았습니다. 프로젝트를 이클립스 :

그래서 시나리오는 : 나는 MVN 이클립스를 실행하면

  • 프로젝트 A는 프로젝트 B에 따라
  • 프로젝트 B는 프로젝트 X, Y 및 Z

에 따라 달라집니다 A, .classpath 파일에는 프로젝트 B와 프로젝트 X 및 Y가 포함되지만 Z는 포함되지 않습니다.

이것은 예상되는 동작입니까?

답변

3

예, 이것은 예상되는 동작입니다. 프로젝트 B는 X, Y 및 Z가 제대로 작동해야하므로 이러한 종속성 (전 이적 종속성)은 프로젝트의 일부분입니다.

maven 종속성 해결에 대한 자세한 설명은 this을 참조하십시오.

mvn dependency:tree 또는 mvn dependency:list을 명령 줄에서 호출하여 전이를 포함하여 모든 종속성을 볼 수 있습니다. 당신은 당신이 유물에 의존하고 있지만이 응용 프로그램 서버에서 Java EE 라이브러리의 경우 것처럼, 런타임에 사용할 수 있음을 알고있는 경우

, 당신은 당신의 pomprovided로 표시 할 수 있습니다 :

<dependency> 
    <groupId>group</groupId> 
    <artifactId>artifact</artifactId> 
    <version>1.0</version> 
    <scope>provided</scope> 
</dependency> 

이러한 종속성은 결과로 나오는 atrifact에 포함되지 않습니다.

EDIT : 불쌍한 독해 기술을 용서해주십시오 :) 나는 'Z'앞에 '아닙니다'를 우연히 목격했습니다.

Z에 대한 종속성이 provided 또는 optional 플래그가 true으로 설정되거나 제외되는 경우이 정의는 여전히 정상적인 동작입니다. 메이븐이 선택적 종속 관계와 제외 종속 관계를 처리하는 방법은 this을 참조하십시오.

이 옵션 중 어느 것도 적용되지 않으면 Z가 다른 종속성과 함께있을 것으로 예상됩니다. 확인하는 가장 좋은 방법은 Z.

+0

의 출력을 mvn dependency:tree 또는 mvn dependency:list을 실행하고 grep을하는 것입니다 그러나 여기에서 문제는, 죄송 B. – cmn

+0

@cmn 죄송합니다, 프로젝트의 모든 종속성을 포함하지 않는 프로젝트 (A)의 클래스 패스 내 나쁜. 편집을 참조하십시오. 'mvn dependency : tree'를 호출하면 Z가 나열됩니까? – kostja

관련 문제