2010-05-06 3 views
0

2 개의 다른 svn 위치에서 동일한 출력 디렉토리로 다운로드해야합니다. 그래서 나는 2 가지 다른 실행을 구성했다. 그러나 체크 아웃을 실행할 때마다 출력 디렉토리가 삭제되므로 이미 다운로드 한 프로젝트도 삭제됩니다. 폴더 $ {경로를} 삭제하려면 실행을 방지 할 수있는 방법이maven scm plugin 모든 실행마다 출력 폴더 삭제

<profile> 
    <id>checkout</id> 
    <activation> 
    <property> 
     <name>checkout</name> 
     <value>true</value> 
    </property> 
    </activation> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <version>1.3</version> 
     <configuration> 
      <username>${svn.username}</username> 
      <password>${svn.pass}</password> 
      <checkoutDirectory>${path}</checkoutDirectory> 
      <skipCheckoutIfExists/> 
     </configuration> 
     <executions> 
      <execution> 
      <id>checkout_a</id> 
      <configuration> 
       <connectionUrl>scm:svn:https://host_n/folder</connectionUrl> 
       <checkoutDirectory>${path}</checkoutDirectory> 
      </configuration> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>checkout</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>checkout_b</id> 
      <configuration> 
       <connectionUrl>scm:svn:https://host_l/anotherfolder</connectionUrl> 
       <checkoutDirectory>${path}</checkoutDirectory> 
      </configuration> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>checkout</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</profile> 

있습니까 : 여기

내 pom.xml 파일의 샘플입니다?


나는 해결책을 들어 왔지만 난 일하러 어차피 :

내가 프로필 받는다는 - 클린 플러그인의 실행에 추가 :

<profile> 
    <id>checkout</id> 
    ... 
    <plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>not-clean</id> 
     <configuration> 
      <filesets> 
      <fileset> 
       <directory>${path}</directory> 
       <excludes> 
       <exclude>*/*</exclude> 
       </excludes> 
       <followSymlinks>false</followSymlinks> 
      </fileset> 
      </filesets> 
     </configuration> 
     <phase>initialize</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

을하지만 실현하지 못할 폴더에있는 모든 것을 제외하는 방법.

아이디어가 있으십니까?

+0

코드를 포맷하려면 모든 줄을 4 칸씩 들여 씁니다. –

+0

Maven에서 코드를 체크 아웃해야하는 이유를 설명 할 수 있습니까? 그리고 왜 두 곳이 필요합니까? Continious Integration Server (예 : 허드슨)가 수행해야하는 것은 아닙니까? – khmarbaise

+0

아 ... Subversion 및 다른 VCT가없는 동일한 대상 위치로 두 번 체크 아웃 할 수 없습니다. – khmarbaise

답변

3

예 : 각 SVN 위치를 Maven 모듈 (하위 프로젝트)에 넣은 다음 두 SVN 위치를 결합하는 코드가 포함 된 세 번째 프로젝트를 만듭니다.

배경 : Maven을 사용하면 항상 POM.xml 당 하나의 프로젝트가 있습니다. 여러 곳에서 데이터를 조인해야한다고 생각되면 모듈을 만든 다음 상위 POM을 사용하여이를 하나의 "원자로 프로젝트"에 참여시킵니다.

빌드하려면 상위 "reactor project"에서 Maven을 호출하십시오.

+0

빨리 재생 해 주셔서 감사합니다. 하지만 실제로는 프로젝트의 구조 (다중 모듈 프로젝트)를 수정하지 않습니다. – ssedano

+0

그럼 이미 중간에 있습니다. 다중 모듈 프로젝트에 대해 이야기하고 있습니다. 사실은 각 호출이 소스에서 찾을 수없는 모든 것을 제거하기 때문에 두 개의 SCM 소스를 같은 폴더로 체크 아웃 할 수 없다는 것입니다. 따라서 두 개의 다른 곳으로 체크 아웃해야합니다 * 또는 * 커스텀 개미 작업을 사용해야합니다. antrun 플러그인을 참조하십시오. –

0

maven-scm-plugin의 소스를 수정했습니다. 내가 필요한 기능을 추가했습니다.

시간과 도움에 감사드립니다!