2010-07-29 2 views
1

개미를 maven2로 변환 중입니다. 나는 문제를 만난다. 제발 도와주세요 : build.xml 파일에서 을, 나는 플러그인 antrun을 사용하고 받는다는에서개미를 Maven으로 변환 : 개미에 대상 속성 "depends"문제가 발생했습니다

<target name="clean"> 
    <delete file="${dir.dist}/${api.jarfile}" /> 
    <delete dir="${dir.build}/**" /> 
/target> 
<target name="prepare1" depends="clean"> 
    <mkdir dir="${dir.build}" /> 
    <mkdir dir="${dir.generated.code.junit}/build" /> 
    <mkdir dir="${dir.dist}" /> 
</target> 
<target name="prepare2" depends="clean"> 
    <mkdir dir="${dir.deploy}" /> 
    <mkdir dir="${dir.dist}" /> 
</target> 

있습니다. Antrun은 첫 번째 목표물과 잘 작동합니다. 그러나 두 번째 목표에서 antrun은 "depends"를 지원하지 않습니다. 나는 다음과 같이 트릭을 할 수 있습니다 : 첫 번째 목표물을 클린 단계에 놓고 두 번째 목표물을 클린 단계에 놓으십시오. 따라서 두 번째 목표는 첫 번째 목표 후에 실행됩니다. 그러나 3 번째 목표물의 경우, 3 번째 목표물은 1 차 목표물 후에 만 ​​실행되어야하기 때문에 (3 차 목표가 실행될 때 2 번째 목표물을 실행하지 않아야하기 때문에)이 트릭이 작동하지 않습니다.

어쨌든 내 build.xml은 많은 대상이있는 큰 파일이고 그 사이의 관계가 복잡하기 때문에이 트릭이 작동하지 않습니다.

어쨌든이 문제를 해결할 수 있습니까? 하나의 작업을 다른 작업에 의존하게하는 maven에는 어떤 것이 있습니까?

감사합니다.

답변

1

a) 왜 함께 던지지 않습니까? Maven으로 ant를 실행하면 개별 타겟을 호출 할 수 없으며, ant 실행을 Maven 단계에 바인딩합니다.

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
     <phase>clean</phase> 
     <configuration> 
      <tasks> 
      <delete file="${dir.dist}/${api.jarfile}" /> 
      <delete dir="${dir.build}/**" /> 
      <mkdir dir="${dir.build}" /> 
      <mkdir dir="${dir.generated.code.junit}/build" /> 
      <mkdir dir="${dir.dist}" /> 
      <mkdir dir="${dir.deploy}" /> 
      <mkdir dir="${dir.dist}" /> 
      </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

을하고 다른 단계에서 좀 더 작업을해야하는 경우, 더 실행 추가 : 당신이 할 수 있도록 깨끗한 ​​단계에서 다음은 받는다는을 사용하는 경우, 당신이 생각해야한다)

 </execution> <!-- end tag from above --> 
     <execution> 
     <phase>generate-sources</phase> 
     <configuration> 
      <tasks> 
       <!-- some more ant tasks --> 
      </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 

B를 메이븐처럼. 개미 작업에서 수행중인 많은 작업이 기본 동작입니다.

클린 단계에서 clean:clean 목표가 실행되어 대상 디렉토리 (및 그와 함께 병)가 삭제됩니다. Maven에서 좋은 연습으로 간주되는 대상 아래에있는 모든 dir을 넣으면, maven은 자동으로 삭제합니다 (그리고 생성합니다).

Maven은 모든 규칙에 관한 것입니다 : 대상/클래스 내부 이동의 주요 이슈에 대한

  • 클래스 및 자원을 테스트
  • 클래스 및 자원 가서

    생성
    • 아무것도 간다 내부 대상 내부 대상/테스트 클래스
    • 생성 된 리소스는/generated-resources/yourfoldername 내부에 있습니다.
    • 생성 된 소스는 target/generated-sources/yourfoldername 내부에 있습니다.

    모든 주요 플러그인은 사용자가 이러한 규칙을 따르고 (기본값에 따라 기본값이 있음) 모든 플러그인을 사용하면 더 쉽게 사용할 수 있습니다.

    예. mvn clean은 생성 된 모든 항목을 삭제하도록합니다. 몇 가지 예외가 있습니다. 플러그인은 다른 위치에 데이터를 저장해야하므로 clean : clean으로 선택할 수 없습니다. 이 플러그인은 대개 대체 깨끗한 모조 (eclipse:cleanidea:clean)를 제공하지만 예외를 더 생성하지는 마십시오.

    또한 maven 규칙에 따라 단계적으로 정리할 필요가 없습니다. 물건을 생성하는 단계는 많습니다 (예 : generate-resources, generate-sources, generate-test-resources, generate-test-sources). 또한 : 폴더를 만드는 것은 일반적으로 불필요합니다. 필자가 알고있는 모든 Maven 플러그인은 파일을 작성할 때 필요에 따라 폴더를 만듭니다.

  • +0

    감사합니다. 그것은 나를 돕는다. – David

    관련 문제