2010-03-24 3 views
17

나는 Maven 라이프 사이클의 특정 단계를 하위 단계로 나누고 싶다. 나는 하나의 하위 단계에서 다른 단계로 실행 흐름을 제어하고 싶습니다. 일종의 ant 종속성과 같습니다.단일 위상 내에서 여러 개의 Maven 플러그인을 실행하고 각 실행 순서를 어떻게 설정할 수 있습니까?

예를 들어, NSIS 플러그인을 사용하여 패키지 단계에서 설치 프로그램에 프로젝트를 패키지화하고 싶습니다. 프로젝트가 war 파일에 패키지화 된 후입니다. 패키지 단계에서 모든 것을하고 싶습니다.

그럴 수 있습니까?

덕분에 그들이 POM에 나와있는 것과 같은 순서로 실행해야 동일한 위상 에 바인딩

+0

pom에 나열된 순서대로 동일한 라이프 사이클 단계에 바인딩 된 플러그인 목표를 실행하지 않습니까? 그냥 추측, 테스트 가치가있을 수 있습니다 ... –

+0

모르겠다 ... 나는 그것을 시도해 보겠다 – Yaneeve

답변

13

플러그인. 특정 상황에서 (예 : antrun 플러그인과 같이 동일한 플러그인을 단계에 두 번 바인딩하는 경우) 버그가 발생합니다 (MNG-2258 및 관련 문제 MNG-3719 참조).

+0

하지만 당신이 관계가없는 블록 (예 : 일반 빌드 블록 대 일부 빌드 블록)에 지정하면 어떻게 될까? 프로필 블록? 프로필 블록에는 플러그인 블록에있는 플러그인 다음에 실행해야하는 플러그인이있을 수 있지만 그렇지 않은 플러그인이있을 수 있습니다. – Matthias

+9

이것은 (최소한 maven 3.0.4에서는) 발생하지 않습니다. 나는 실행에 바인딩 된 실행을 가진 두 개의 플러그인을 가지고 있는데, 하나는 6 개의 플러그인 목록에 처음 나열되고 다른 하나는 마지막에 나열된 소스이다. 그러나 마지막에 나열된 목록 (먼저 나열된 목록에 따라 다름)이 항상 먼저 실행됩니다. – matt5784

+0

matt5784에 동의합니다. ( –

6

같은 문제가있었습니다. How to perform ordered tasks in Maven2 build을보십시오. 어떤 이유로 위상에 바인딩 된 다른 목표는 해시 맵 또는 실행 순서를 무작위로 만드는 기타 정렬되지 않은 구조에 저장됩니다. 내 솔루션은 여러 단계로 작업을 분산시키는 것이었지만 귀하의 경우에는 그럴만 한 이유가 없다고 생각합니다. (통합 패키징은 사전 통합 테스트가 아닙니다.) 다음 중 하나를 수행 할 수 : - 외부 목표를 실행)

1 행운을 시도하고 메이븐 당신을 위해 올바른 순서를 chosses 있는지 (당신은 아마

2) 독립 플러그인을 사용) 이미 시도 수명주기. something like : mvn 패키지 org.codehaus.mojo : nsis-maven-plugin : 1.0 : 컴파일.

3) 그들을 모듈로 분리하십시오 : 두 개의 하위 모듈을 포함하는 상위 pom을 가져야합니다. 하나는 - 전쟁 프로젝트이고 다른 하나는 nsis 프로젝트입니다.

4) 유형을 변경하여 사용자 정의주기를 사용하십시오.이 경우 "exe"를 사용할 수 있습니다. 이 작업은 사용자 정의 플러그인 확장 (guide to using extension)

5)을 사용하여 수행됩니다. jetspeed-mvn-maven-plugin을 사용하십시오. 나는 그것을 사용한 적이 없지만 당신의 필요와 관련이있는 것처럼 보입니다.

희망은 새로운 아이디어를 제공합니다.

로넨

+0

감사합니다. 그러나 기본 수명주기의 일부 "꼬임"을 제외하고는 @Pascal이 맞습니다. – Yaneeve

+1

이들은 "꼬임"이 아닙니다. 실제로 Maven 멤버에게 물으면 3 번 모듈이 모듈의 분리 인 "Maven 방식"에 가장 잘 부합한다고 말하고, 생각할 때 웹 어플리케이션을 만드는 것이 합리적입니다. 설치 프로그램 프로젝트는 두 가지 별도의 작업입니다. – rperez

관련 문제