2017-05-01 4 views
0

2 개의 모듈을 가진 maven 프로젝트에서 자원을 가진 jar 파일을 생성하는 "impl"과 서버 구현 전쟁을 생성하는 "server"가 있습니다.모듈 간 리소스를 공유하기위한 Maven 설정

implementation 
    | 
    |-impl 
    | |-src 
    | | |-main 
    | |  |-resources 
    | |-pom.xml 
    | 
    |-server 
    | |-src 
    | | |-main 
    | |  |-java 
    | | |-test 
    | |  |-java 
    | |-pom.xml 
    | 
    |-pom.xml 

내가 빌드를 만들려고 할 때 현재 IMPL jar 파일은 서버의 전쟁 파일의 WEB-INF/lib 디렉토리에 포함 된 서버 war 파일이 생성 된 후에는 압축을 푼 및 그 기반으로되고 있습니다 그래서 , 모든 테스트가 실행 중이고 모든 것이 잘 작동합니다.

필자는 전쟁에서 jar를 분리해야합니다. 그래서 war 파일에는 impl의 jar 파일이 포함되지 않으며 war는 jar 파일을 tomcat의 lib 디렉토리에 넣을 때만 작동합니다.

나는 그것을 서버의 pom.xml 파일에서 수행하려고 시도했으며 제공된 범위로 impl 모듈을 설정 했으므로 jar 파일은 전쟁에 더 이상 포함되지 않지만 이제는 사용 된 war 파일을 압축 해제 한 후 테스트가 실패합니다 테스트를 실행하기 위해 필요한 JAR 파일이 없습니다. 서버 war 파일을 압축 해제 한 후 테스트가 정상적으로 작동 할 수 있도록 impl의 jar 파일을 WEB-INF/lib 디렉토리에 복사하거나 "impl"jar 파일을 서버의 WEB-INF/lib 디렉토리에있는 것처럼 작동하도록 설정할 수 있습니까? 테스트를 실행할 때 또는 내 문제에 대해 가능한 다른 해결책이 있습니까?

+0

이 jar 파일에 대해 ' 테스트'을 사용하는 것은 테스트 클래스 경로에 있다는 것을 의미합니다 ... 전쟁 등에 패키지되지 않음을 의미합니다. 왜 내가 이해하지 못하는지는 war 파일의 압축을 풀어야하는 이유입니다. 러닝 테스트? 어떤 종류의 검사? – khmarbaise

답변

0

병의 범위를 provided으로 지정할 필요는 없습니다. 전쟁에 정상적으로 의존하는 것으로 포함 시키십시오. pom.xml.
대신 Maven War Plugin을 입력하면 war 파일의 모든 파일 (jar 파일 포함)을 제외 할 수 있습니다.
<packagingIncludes> 구성 매개 변수를 사용해야합니다. 아래 샘플 코드를 참조하십시오.

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>3.1.0</version> 
     <configuration> 
      <packagingExcludes>WEB-INF/lib/your_jar_name.jar</packagingExcludes> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

자세한 내용은 link을 확인하십시오.