2012-03-19 3 views
0

빌드를 공개하려면 mvn release:prepare을 사용하고 싶습니다. 그러나 우리는 또한 종속성을 구축하고 두 빌드 모두 SNAPSHOT을 사용합니다.두 Maven 목표를 서로 연결하여 실행하려면 어떻게해야합니까?

메이븐-버전 - 플러그인은 우리가이 다루는 도움이 될 수 있습니다, 그래서 우리의 빌드 프로세스는 다음과 같습니다

mvn versions:update-properties 
mvn versions:update-parent 
svn ci 
mvn release:prepare 

나는 우리가 함께 이러한 연결 수있는 방법으로 보면서 내가 찾은 가장 간단한 방법은를 작성했다 맞춤 라이프 사이클이 적용된 플러그인 : http://www.sonatype.com/books/mvnref-book/reference/writing-plugins-sect-plugins-lifecycle.html

누구든지 개선 할 수 있습니까? 그 정도의 복잡성에서 나는 차라리 세 줄을 문서화하고 싶습니다.

리딩은 매우 긴 것, 이것은 도움이되기를 바랍니다 :

Parent (has a version) 
|- ParentFather 
|- ParentMother 

Main (parent is Parent, has a version, contains property Child.version) 
|- MainBrother (depends on MainSon and ParentFather) 
|- MainSister 
|- MainDaughter (has version Child.version) 
|- MainSon (has version Child.version) 

그래서 나의 최종 목표 홈페이지를 출시, 나는 부모, 아들과 딸을 해제해야합니다. 이 작업을 마쳤 으면,이 버전을 사용하기 위해 Main을 업데이트해야합니다.

+0

이 프로젝트에 사용중인 pom의 발췌 부분을 줄 수 있습니까? mvn 버전 : update-parent는 나에게 조금 이상하게 보입니다 ... 보통 멀티 모듈에서는 mvn 릴리즈를 빌드하십시오 : 릴리스 준비 : 수행은 충분합니다 ... – khmarbaise

+0

@khmarbaise, 아마도 m-release -p 우리를 위해 update-parent를 할 것이지만 Child.version 속성을 업데이트 할 수 있다고 생각하지 않습니다. 그렇게되면 문제가 해결됩니다! – lxs

+0

Main은 Parent와 같은 수준입니까? 그렇다면 상위 구조체를 먼저 푸시해야하며, 이후에 mvn 릴리스주기 (메인에서 상위 항목을 업데이트해야 할 수도 있음)를 사용하여 메인을 releae 할 수 있습니다. 하지만 귀하의 설명을 기반으로 그것은 메인이 하위 수준이어야합니다 부모 올바른 아래에 있어야할까요? – khmarbaise

답변

1

자동화를 원할 경우 간단한 스크립트가 도움이 될 수 있습니다. 이전 단계가 실패하지 않았는지 확인하기 위해 반환 값에 대한 평가를 추가 할 수도 있습니다.

프로필을 사용하여 순서대로 단계를 실행 해 보셨습니까? versions 플러그인 단계를 프로젝트의 초기 단계에 바인딩 한 다음 SVN 커밋 (SCM 플러그인 사용) 및 릴리스를 따를 수 있습니다.

+0

스크립트는 옵션이지만, 이식성 구축에 영향을 미치고 "한 번만 더 명령을 내리려고"하는 유혹이 있습니다. 프로파일이 가능할 수도 있지만, 약간 해킹 된 느낌이 들지만, 나는 그것을 조사 할 것입니다. – lxs

관련 문제