2014-09-11 2 views
0

나는이 의 pom.xml에서 다음과 같은 구조 :직렬 실행 <phase>

<profile> 
    <id> x </id> 
    <build> 
     <finalName> y </finalName> 
     <plugins> 
      <plugin> 
       <artifactId>maven-clean-plugin</artifactId> 
       <!-- DELETE SOME FOLDERS AND SOME FILES --> 
      </plugin> 
      <plugin> 
       <artifactId>maven-war-plugin</artifactId> 
       <!-- MOVE A FILE --> 
      </plugin> 
      <plugin> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <version> 1.6 </version> 
       <executions> 
        <execution> 
         <phase> <!-- WHAT COMES HERE ? --> </phase> 
         <configuration> 
          <!-- I EXECUTE CMD FILE HERE --> 
         </configuration> 
         <goals> 
          <goal> run </goal> 
         </goals> 
        <execution> 
       <executions> 
      </plugin> 
     </plugins> 
    </build> 
</profile>  

내가 플러그인에 대한 일련의 실행 달성하고자 : 일부 폴더를 삭제

  1. 및 일부 파일 (첫 번째 플러그인)
  2. 파일 이동 (두 번째 플러그인)
  3. cmd 파일 (세 번째 플러그인) 실행

<phase>에 위의 순서 (순차 실행)를 사용하려면 어떻게해야합니까? 관련성이 있습니까? 예를 들어 pre-integration-test을 사용해도 괜찮습니까? http://maven.apache.org/ref/3.2.2/maven-core/lifecycles.html

답변

1

메이븐 (새로운 플러그인을 작성하지 않고) 수명주기 단계를 추가 지원하지 않습니다

P.S : 여기에 상이다.

복잡한 빌드 단계가 있고 특정 순서 이 필요한 경우이 주문은 표준 수명주기를 위반하므로 Maven이 적절한 도구가 아닐 수 있습니다. 대신 Gradle을 고려하십시오.

Maven을 사용해야하는 경우에는 플러그인을 중지하십시오. 대신 antrun 플러그인을 사용하여 모든 빌드 단계를 복제하면 모든 것이 단일 Ant 스크립트로 완료됩니다. 그런 다음 모든 단계를 한꺼번에 실행하기를 원하는 라이프 사이클의 장소를 찾으십시오.

generate-sources은 컴파일하기 전에해야 할 일이 있다면 좋은 장소입니다. 컴파일 및 테스트 후에 코드를 실행하려면 prepare-package을 사용하십시오.

은 전체 수명주기 여기를 참조하십시오 : http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

1

당신이 실행 순서가 치어 파일의 정의의 명령에 의해 정의 된 같은 라이프 사이클 단계에 다른 플러그인의 실행을 추가 할 경우.

위의 세 가지 플러그인을 모두 package 단계에 바인딩하면 지정된 순서대로 실행됩니다.

물론 작동 할 antrun 플러그인을 사용할 수도 있으며 Maven의 기본 동작을 고려하지 않고 암시 적으로 정의 된 순서로 단계를 실행합니다.

exec-maven-plugin을 사용하여 특정 수명주기 단계에서 스크립트를 실행할 수도 있지만 스크립트가 OS에 따라 달라지는 좋은 해결책이 아닐 수 있습니다. Groovy 플러그인을 사용하여 Groovy 코드에서 몇 가지 단계를 수행 할 수도 있습니다.