2009-11-14 5 views
2

저는 여러 모듈 maven 프로젝트 (여러 레벨의 중첩)를 가지고 있습니다. 일반적으로 maven 빌드 (예 : mvn install 또는 기타)를 실행하면 maven은 의 모든 목표를 실행 한 후 아이들과 함께 진행합니다.아이들이 완료 한 후 부모에게 목표를 실행하십시오.

부모에서 실행되는 목표를 정의하고 싶지만 모든 하위가 처리 될 때까지는 정의 할 수 없습니다. 이것을 할 수있는 방법이 있습니까?

구체적으로 말하면, 내가 수행하고자하는 것은 exec:exec 목표를 실행하여 테스트 결과 파일을 찾는 파일 시스템을 되풀이하고 CI 시스템 (cruisecontrol)에 의해 중앙 위치로 복사하는 것입니다. 따라서이 문제에 대한 대체 솔루션도 환영합니다.

업데이트 : 하나의 요구 사항을 언급하는 것을 잊었습니다. 빌드가 성공했는지 여부에 관계없이 exec 목표를 실행해야합니다.

+0

업데이트와 관련하여 CI 도구가 책임지지 않았습니까? –

답변

2

다른 답변과 내 자신의 후속 조사를 기반으로, 내가 설명한 것은 Maven에서 가능했던 것처럼 보이지 않습니다.

그러나 해결책은 cruisecontrol에 한정되어 있지만 문제는 해결할 수있었습니다. 기본적으로 내 임무 목표를 사전 사이트 단계에 바인딩 한 다음 내 사전 설정 구성에서 사전 사이트를 sitegoal으로 지정했습니다. sitegoal은 주요 목표 다음에 실행되며 빌드가 성공했는지 여부에 관계없이 실행됩니다.

다른 CI 시스템이 비슷한 것을 제공한다고 생각합니다.

2

멀티 모듈 빌드가 끝날 때 부모로부터 일을하는 것이 가능하지 않다고 생각합니다. 그러나 모든 하위 프로젝트에 따라 모듈 (pom 유형 일 수 있음)을 추가하는 것을 고려 했습니까? (따라서 원자로 빌드에서 "마지막"프로젝트가 될 것입니다)이 모듈에서 exec:exec을 실행하십시오? 왜 이런 식으로 작동하지 않을지 모르겠다.

+0

이것은 기본 상황에서 작동하지만 모듈이 예일 때 실패합니다. 봄 부팅 응용 프로그램. 그것들은 좋은 의존 관계를 만들지 않습니다. – Zajo

0

결과를 상위 위치까지 복사하기 위해 각 하위 프로젝트의 확인 단계에 antru 복사 단계를 추가하지 않는 이유는 무엇입니까? 그런 다음 부모에게 CI 집계를 수행하는 비슷한 단계를 수행 할 수 있습니다.

또는 각 하위 프로젝트에 simliar techneque를 사용하여 자체 CI 통합을 수행 할 수 있습니다.

우리는이 기법을 사용하여 jar에 대한 websphere ejb 스텁을 생성합니다.

1

보고 플러그인과 비슷하게 들립니다. Maven 플러그인을 만드는 것은 실제로 매우 쉽습니다.