2013-12-12 4 views
0

복잡한 다중 모듈 오픈 소스 아이비 프로젝트에서 작업하고 있습니다.이 프로젝트에는 개미의 build.xml이 있습니다. 각 아이비 모듈의 빌드를 시작하는 최상위 레벨. 그러나 여기서 목표는 원래 빌드 스크립트 (ivy.xml과 build.xml)를 수정하지 않고 외부 빌드로 maven을 사용하여 앤트 빌드를 시작한 다음 빌드 된 결과를 가져 와서 Nexus 서버에 게시하는 것입니다.maven을 사용하여 아이비 프로젝트 (다중 모듈 포함)의 여러 이슈를 메이븐 저장소 (넥서스)에 게시하는 방법

어려운 점은 여기서 만들어진 인공물은 여러 개의 병입니다.이 모든 병을 maven이있는 nexus 서버에 게시해야합니다. 하나의 pom.xml은 오직 하나의 메이븐 아티팩트만을 매핑하기 때문에이 경우 여러 개의 아티팩트는 메이븐을 통해서가 아니라 아이비를 통해 빌드됩니다. 그래서 내 목표를 달성 할 수있는 실현 가능한 방법이 있는지 궁금합니다.

현재 pom.xml의 최상위 레벨에서 maven-antrun-plugin을 사용하여 최상위 레벨에서 build.xml을 호출하고 build-helper-maven-plugin을 사용하여 아티팩트를 첨부하지만 '작동하지 않습니다. .

답변

0

현재 나는 당신과 비슷한 작업을하고 있습니다. 개미로 작성된 전체 빌드로 거대한, 레거시 시스템을 갖추고 있습니다. 그것은 우리가이 작업을 처리하는 방법이다 상관없이, 당신이 그것을 받아 들여야 무슨

  1. 을 받는다는 = 유물 당 항아리 (물론, 당신이 예선과 첨부 파일을 사용할 수 있지만 실제 학대의 매우 권장하지 않음) . 그것은 결국 철학입니다. 하루가 끝날 때 시스템은 (당신이 말한대로) 모듈으로 구성되어 있으므로 각 모듈에는 버전, 소스 및 기타 모듈에 대한 종속성이 있어야합니다.
  2. 기존 개미 코드를 다시 사용하려면 antrun 플러그인을 살펴보십시오. 우리가 한 일은 pom 유형의 부모 폼으로 모든 공통 빌드 코드 (예 : 생성자 실행, 첨부 파일 생성, 어셈블리 등)를 "간단하게"분리했습니다. 그런 다음 단순히 어린이 폴즈의 속성을 활성화하여 관련 대상을 실행합니다. 여기에 우리가 단순히

    <properties> 
        <EXECUTION_TRIGGER_PROPERTY>true</EXECUTION_TRIGGER_PROPERTY> 
    </properties> 
    

    당신의 실행을위한 적절한 단계를 선택 maven lifecycle guide보고 기억 정의

    <build> 
    <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <version>1.7</version> 
         <executions> 
          <execution> 
           <id>EXECUTION_NAME</id> 
           <phase>generate-sources</phase> 
           <goals> 
            <goal>run</goal> 
           </goals> 
           <configuration> 
            <target if="EXECUTION_TRIGGER_PROPERTY"> 
             <taskdef resource="net/sf/antcontrib/antlib.xml"/> 
            </target> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
    </plugins> 
    </build> 
    

    그리고 자식 치어의

    예입니다.

  3. maven 플러그인을 사용하면 더 쉽게 작업 할 수 있다는 것을 잊지 마십시오. 예를 들어, <javac> 개미를 실행하는 대신, jar 타입으로 아티팩트에 침입하면 모든 컴파일이 수행됩니다. javadoc, jaxws 등을 생성하는 플러그인을 찾을 수도 있습니다.

당신이 볼 수 있듯이 시스템을 maven으로 작동시키는 것은 그렇게 간단하지 않습니다. 빌드가 어떻게 작동하는지 다시 생각해야합니다. 반면에 여러분의 의존성을보고 이해하는 능력, 현대 IDE, 바이너리 저장소에서의 작업의 용이함 등은 대부분의 경우에 가치가 있습니다.

+0

감사합니다. 귀하의 답변은 고무적입니다. 당분간이 문제에 대한 한 가지 해결책은 maven의 install/deploy 플러그인을 사용하고 "install/deploy-file"목표를 사용하는 것입니다. 그런 다음 게시 할 항아리를 찾고, 이슈 세부 사항을 지정하고, 각 이슈에 대한 POM 파일을 생성하는 여러 실행을 작성하십시오. 물론 하나의 주요 아티팩트가 있어야하며, 기본 아티팩트로 만들 수 있습니다. – fisherbill

관련 문제