2011-08-04 6 views
1

내 Maven 프로젝트는 다중 모듈이며 일반적으로 버전 번호는 동기화되지 않습니다. 예를 들어 1.2.3-SNAPSHOT으로 버전이 변경된 마스터 POM과 3.4.5-SNAPSHOT으로 버전이 지정된 하위 모듈을 동기화 할 수 있습니다 (동기화되지 않도록하는 주된 이유는 종종 모듈이 프로젝트에서 다른 모듈로 이동되고 그것의 버전을 지켜야한다).Maven : 하위 모듈에서 주 모듈 버전 검색

이제 기본 프로젝트 버전을 주 모듈 (또는 webapp 등 ...)을 포함하는 모듈의 리소스에 넣고 싶습니다. 물론 하위 모듈입니다. 즉, 하위 모듈에서 마스터 pom 버전에 액세스해야합니다.

또한 내 프로젝트에 3 또는 4 레벨이 있다는 점에 유의하십시오. 따라서 마스터 pom은 부모뿐 아니라 하위 모듈의 할아버지입니다.

고급 기능을 포함하여 Maven에 대한 경험이 있지만 지금까지이 문제를 해결할 수 없었습니다.

감사합니다.

+0

너무 명백한 대답은 그랜드 마스터 POM이 하위 하위 모듈에서 읽은 속성에 그랜드 마스터 버전을 넣도록하는 것입니다. 내가 뭘 놓치고 있니? –

+0

... 하위 모듈이 그랜드 마스터로부터 상속한다는 사실. 값 대신 속성의 정의를 상속하므로 $ {project.version}을 자체 버전으로 로컬로 다시 평가합니다. –

+0

아, 그럼 아마도이 작품. 내가 제안 하려던 것은 Grandmaster에서 _literal_ 버전 _redundantly_을 사용하여 "grand-master.version"과 같은 속성을 정의하는 것이 었습니다. 로컬 충돌이 없습니다. –

답변

4

${project.parent.version}과 함께 사용해야합니다.

+2

어린이 POM에 3 단계와 4 단계가 있기 때문에 당신의 솔직한 제안은 저에게 효과적이지 않을 것입니다. 그러나 당신은 내가 매뉴얼을 다시 읽도록 만들었고 실제로'$ {project.parent} '는 부모를 포함하여 부모의 프로퍼티 전체를 가리킨다. 즉,'$ {project.parent.parent.version} '은 3 단계로 작동합니다. 나는 수준의 수에 독립적으로 작동하는 무언가를 선호 할 것이지만,이 접근법은 현재 좋은 것입니다. 아마도 Groovy Maven 플러그인이나 유사한 플러그인을 사용하여 Maven 속성을 통해 루트 모듈까지 탐색하는 작은 스크립트를 작성할 수 있습니다. –

관련 문제