2012-08-10 3 views
2

나는 첫 번째 - 포장 용기가있는 "A", 두 번째 - "B"포장 용기, 세 번째 - "C"포장 용기가 있습니다. "C"는 "B"를 컴파일 타임 의존성에 의존하고 "B"는 "A"에 따라 컴파일 시간 의존성을 결정합니다. 프로젝트 "C"는 "A"의 클래스도 사용합니다. 그래서 나는 전이 의존성 C -> B -> A를 가지고 있습니다. 그러나 프로젝트를 컴파일하려고 할 때 maven이 컴파일 오류로 실패했습니다. 프로젝트 C에서 사용되는 클래스 "A"를 찾을 수 없습니다.Maven 전이 의존성

나는 maven이 전이 의존성을 해결한다고 생각했다. 왜 나는 그런 오류가 발생합니까?

+0

정상적으로 작동하므로 올바르지 않은 것이 있습니다. B가 잘 컴파일됩니까? 부모 pom은 여러 개의 pom이고 A, B 및 C를 모듈로 정의합니까? C에서 A의 테스트 클래스를 사용하고 있습니까? – Raghuram

답변

2

Maven 전이 의존성을 해결하지만 자동으로는 빌드하지 않습니다. 당신은 프로젝트 목록과 함께 --also-make/-am 플래그를 제공하여 받는다는 당신이 원하는 걸 얻을 수 있습니다 :

mvn -am -pl C clean install 

이, A B, C가 공유 부모의 모든 모듈이 있으며,이 명령을 실행한다고 가정 부모 디렉토리의 위.

+0

프로젝트 maven에서 'mvn clean install'을 실행하면 maven은 프로젝트가 처리되는 순서 (A, B, C)를 기록하고 콘솔에서는 성공적으로 처리 된 A 및 B 프로젝트를 볼 수 있습니다. 따라서 프로젝트 C가 처리를 시작하기 전에 프로젝트 A 아티팩트가 이미 저장소에 있습니다. – maks

+0

typo, 그 3 개의 프로젝트의 부모 프로젝트에'mvn clean install'을 실행합니다. – maks

+0

@maks 정확한 오류 메시지에 대한 자세한 내용을 게시해야합니다. 시나리오는 Maven의 일반적인 경우입니다. 작동해야합니다. 어쩌면 버전이 일치하지 않을 수 있습니까? Maven이 올바른 순서로 그들을 빌드하면 POM에 다른 결함이 있습니다. –