2012-06-20 5 views
2

우리의 앱을 빌드하기 위해 리소스를 복사하는 Maven 어셈블리 스크립트가 있습니다. 별도의 외부 프로젝트에서 일부 war 파일을 출력의/webapps 디렉토리로 복사해야합니다. 마법 명령을 찾지 못하는 것 같습니다.Maven 어셈블리 플러그인으로 이슈를 복사하는 방법은 무엇입니까?

<include com.mygroup:mywarfile>과 함께 어셈블리에 dependencySet을 추가하려고 시도했습니다. 이것은 'mywarfile'을 컴파일 또는 런타임의 범위를 가진 프로젝트에서 전쟁 종속성으로 추가하면 작동합니다. 불행히도, 내 프로젝트는 전쟁을 일으키고, maven-war-plugin은 외부 mywarfile을 오버레이로 포함하고 있습니다.

[경고]이 다음 패턴이 유물 포함 필터에 트리거되지 않았다 : 'com.mygroup 내가 제공 또는 테스트에 외부 전쟁 의존성의 범위를 설정하면

, 어셈블리는 경고와 함께 실패 : mywarfile '

내가하고 싶은 일은 어셈블리에 내 로컬 저장소의 이슈를 어셈블리 출력으로 복사하는 것입니다. 프로젝트의 다른 부분을 어지럽히 지 않고 어떻게해야합니까?

답변

2

maven-assembly-plugin은 복사 할 수 없습니다. 종속성을 복사하는 더 좋은 방법은 종속성을 복사 할 수있는 maven-dependency-plugin입니다. Tomcat 등으로 배포하는 것에 대해 이야기하는 경우 carg2-maven-plugin 또는 tomcat-maven-plugin을 자세히 살펴보아야합니다.이 작업은 해당 작업에 더 적합한 것으로 보입니다.

+1

음, 복사는 Maven 어셈블리 플러그인의 * 기본 * 목적입니다. FileSet, DependencySets 및 나머지는 앱의 일부를 최종 릴리스에 복사하기위한 것입니다. 별도의 maven-dependency-plugin을 사용해야 어셈블리 플러그인의 목적을 달성 할 수 없습니다. 또한 어셈블리 출력이 zip 파일 인 경우에는 작동하지 않습니다. – ccleve

+0

미안하지만, 이름에 따르면 maven-assembly-plugin은 아티팩트 및/또는 파일을 아카이브로 어셈블하지만 한 위치에서 다른 위치로 아티팩트를 복사하지는 않습니다. 빌드 (다중 모듈 또는 리포지토리) 내에서 이슈를 복사하고 싶다면 의존성 플러그인이 정확히 원하는 것입니다. – khmarbaise

+0

@ user237815 : 어셈블리 플러그인은 프로젝트에서 이미 사용 가능한 파일에서만 작동합니다. 사용할 수없는 콘텐츠를 추가하기위한 것이 아니므로 종속성 플러그인을 사용하는 것이 좋습니다. – tom

0

이 작업을 시도하지는 않았지만 overlay 구성이 maven war pluginexclude 기능을 사용하여 종속 프로젝트가 전쟁 프로젝트에 포함되지 않도록 할 수 있습니다. Overlay 설명서의 수정 된 스 니펫

... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.2</version> 
     <configuration> 
      <overlays> 
      <overlay> 
       <groupId>com.example.projects</groupId> 
       <artifactId>warToBeExcluded</artifactId> 
       <excludes> 
       <exclude>*</exclude> 
       </excludes> 
      </overlay> 
      </overlays> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
... 
+0

이 방법이 효과적이며 질문을 게시하기 전에 해결 방법이 필요했습니다. 그것은 일종의 해킹입니다. – ccleve

관련 문제