2014-09-11 2 views
0

나는 다음과 같은 구조의 Maven 프로젝트를메이븐 릴리스 프로젝트 구축 - 유물 버전 번호

 
Project 
- pom.xml 
--- Module1 
--- pom.xml for Module1 
--- Module2 
--- pom.xml for Module2 
--- Module3 
--- pom.xml for Module3 
------- Module31 
------- pom.xml for Module31 
------- Module32 
------- pom.xml for Module32 

즉 프로젝트는 (POM으로 패키지)의 pom.xml을 그리고 모듈을 가지고 있습니다. 각 모듈은 개별 ModuleX pom.xml 파일에 <parent> .. </parent> 섹션을 가지고 있습니다.이 섹션은 "Project"(루트 pom.xml에 정의되어 있습니다)의 이슈로 설정 될 수 있습니다 - 또는 다른 프로젝트 2/프로젝트 3/프로젝트 N 이슈.

이제 Project1 루트 pom.xml이 0.0.1-SNAPSHOT으로 설정되어 있는지 확인하고 릴리스 후보 (비 스냅 샷) 빌드 "0.0.1"을 만들고 싶다면 예상합니다. 모든 모듈은 프로젝트의 루트 pom.xml에 설정된 것과 동일한 버전으로 이슈를 생성해야합니다.

Module2 pom.xml에 다른 프로젝트 (예 : Project2) 인 부모가 있고이 부모의 버전 ID가 "0.0.7-SNAPSHOT"및 Module2 pom.xml (프로젝트 아래에 있음)) 또한 Project2의 아티팩트를 사용하는 일부 종속성이 있습니다.

<parent> 섹션의 부모가 다른 경우 (ProjectN으로 설정되는 경우 N은 임의의 숫자가 될 수 있음) ModuleNode3 및 Module32에도 동일한 사례가 존재하며 ProjectN 프로젝트의 아티팩트에 종속됩니다.

내 질문 :

1. 내가 Module1의, 모듈 2, Module3 및 대한 ID 아티팩트는 메이븐 루트 치어을 위해 생성 버전을 다음 프로젝트의 0.0.1 (스냅 샷이 아닌) 빌드를 생성하는 경우 Module31/32?

2. 프로젝트의 0.0.1 릴리스가 해당 모듈의 <parent> 섹션에 다른 프로젝트 ** N **을 사용하더라도 해당 모듈의 모든 버전에 대해 동일한 버전 # 0.0.1을 생성하는지 확인하려면 어떻게해야합니까? <parent> 섹션에 다른/새로운 <version>..</version> 값이 설정되어 있어야합니다.

감사합니다.

답변

2

maven-release-plugin을 보시고, 정확히 원하는대로 보내시겠습니까? release:prepare은 폼을 확인 및 업데이트하고, 프로젝트에 태그를 지정하고 다음 개발주기에 대비하여 준비합니다. release:perform은 태그를 기반으로 프로젝트를 작성하고 아티팩트를 원격 저장소에 푸시하는 것에 관한 것입니다.

+0

그러나 몇 가지 단점이 있습니다. 즉, 릴리스 프로세스 중에 두 번 빌드를 작성합니다. 추신 : http://labs.bsb.com/2014/02/better-maven-releases-with-jenkins/ –

+0

Maven-release-plugin 링크 - 멀티 모듈 프로젝트 메시지가 표시됩니다. 프로젝트의 각 모듈에 대한 버전 번호. 모든 모듈이 상위 POM과 동일한 버전을 얻길 원할 경우 autoVersionSubmodules 옵션을 true로 설정할 수 있습니다. 이제 릴리스 버전과 다음 개발 버전에 한 번만 묻게됩니다. !!! 나는 그것이 다른 projectN (그러나이 모듈 X는 다른 프로젝트의 섹션에 "Project1"또는 "Project"라고되어 있음)에 나열된 moduleX에 주어진 버전을 찾으려고합니다. –

+0

maven-release-plugin을 사용하면 mvn을 -B와 함께 실행하면 다음과 같은 오류가 발생합니다. 릴리스되지 않은 종속성 인 maven-release-plugin 때문에 프로젝트를 릴리스 할 수 없습니다. -B (--batch-mode) 옵션을 사용하지 않으면 mvn이 pom 파일에서 기대하는 원하는 값을 여러 번 + 묻습니다. 어떻게하면 mvn이 (-B 추측에) 프롬프트를 표시하지 않고 0.0.4 대신 0.0.1로 릴리스 버전이 변경되는지 알 수 있습니다.이 프로젝트의 아티팩트가 0.0.4까지 릴리스됩니다. 이것은 root pom이 module1의 pom의 부모 섹션이 루트 pom의 이슈 ID가 아닌 module1을 집계 할 때 발생합니다. –