2014-04-14 2 views
0

내 작업 공간의 다른 프로젝트 모듈에 의존하는 프로젝트가 있습니다. 모든 의존성 (모듈 포함)을 lib 폴더에 복사하려고합니다. 패키지 내부에 모든 jar 파일이없는 실행 가능한 jar 파일을 만듭니다.다중 모듈 프로젝트의 종속성을 복사하는 방법은 무엇입니까?

그러나 maven-dependency-plugin은 모듈 클래스를 내 프로젝트의 대상 폴더에 복사 할 수 없다는 불만을 계속합니다. 무엇이 잘못 되었을까요?

my.groupt 내 모듈 1.0

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>package</phase> 
      <goals> 
      <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
      <outputDirectory>${project.build.directory}/lib</outputDirectory> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

결과 :

목표 org.apache.maven.plugins을 실행하지 못했습니다 : 받는다는 - 종속성 - 플러그인 : 2.1 : copy-dependencies 프로젝트 my-project에서 복사 : C : \ workspace \ my-module \ target \ classes의 이슈를로 복사하는 중 오류가 발생했습니다.C : \ lib 디렉토리 \ 클래스 \ 내 프로젝트의 \ 목표는 \ 작업 공간 : 당신은 아마 Maven Shade 플러그인을 찾고 있습니다

답변

2

오류의 원인은 일식의 작업 영역 해결입니다. 이클립스 m2e는 자신의 아티팩트 해상도에 자신을 주입한다.

그래서 내 프로젝트가 모든 종속성을 얻으려고 할 때 이슈 리졸버는 jar 파일 (아직 존재하지 않음)이 아니라 종속 프로젝트의 클래스 폴더를 반환합니다.

"실행 -> 메이븐 설치"를 사용하여 프로젝트를 빌드하려고하면 제대로 작동합니다.

이렇게하면 작업 영역에서 편안하게 해결할 수없는 시나리오입니다. 프로젝트의 작업 공간 해상도를 바꾸거나, 일식 (라이프 사이클 바인딩) 내 종속성 플러그인을 비활성화하거나, 어셈블리와 같은 다른 플러그인을 사용하여 폐지를 복사하십시오 (클리너, btw). 그러나 후자는 maven이 수동으로 호출되는 경우에만 작동합니다.

0

(액세스가 거부).

Maven Shade를 통해 빌드 된 모듈은 종속성을 자동으로 추적하는 것을 매우 어렵게 만듭니다. 음영 처리 된 결과를 빌드 프로세스의 주요 결과로 삼지 마십시오.

관련 문제