2016-09-21 2 views
2

나는 모든 통합 테스트가 단계에서 spring-boot-maven-plugin 단계를 사용하여 응용 프로그램 모듈을 시작하고 스위트를 실행하는 별도의 모듈에있는 스프링 부트 프로젝트를 가지고 있습니다. . 이 구조는 1.4.0.RELEASE로 업그레이드 될 때까지 제대로 작동합니다. 이제 나는 ClassNotFoundException이됩니다.spring-boot-maven-plugin> = 1.4.0 jar 구조 변경

"1.4.0"jar 구조를 확인한 후에 "1.3.6"하나와 모든 패키지가 최상위 수준이 아니라 BOOT-INF 등의 폴더에 없다는 것을 알았습니다 (화면 참조). 클래스 로더는 "mainClass"에 정의 된 패키지를 더 이상 찾을 수 없습니다.

누군가가 문제를 해결하고 새 버전에서이 솔루션을 사용할 수 있는지 생각해보십시오.

미리 감사드립니다.

jar structure < 1.4.0

jar structure >= 1.4.0

ITest 모듈 :

<!-- dependency to the app module --> 
<dependency> 
    <groupId>com.company.app</groupId> 
    <artifactId>app-module</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
</dependency> 
... 
<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <version>${spring.boot.version}</version> 
    <configuration> 
     <mainClass>com.company.app.RunServer</mainClass> 
    </configuration> 
    <executions> 
     <execution> 
      <id>pre-integration-test</id> 
      <goals> 
       <goal>start</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>post-integration-test</id> 
      <goals> 
       <goal>stop</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

응용 프로그램 모듈 :

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <goals> 
       <goal>repackage</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

답변

0
+0

답장을 보내 주셔서 감사합니다. 이것은 좋은 요약이지만 나는 내가 이미 알고있는 것보다 더 많은 것을 말하지 않는다. 클래스 로더가 새로운 jar 구조에서 클래스를 찾을 수 없다는 문제에 대한 해결책을 찾지 못했습니다. 해당 _classifier_ 접근 방식을 사용하면 클래스가 있지만 응용 프로그램 시작에 필요한 종속성은 더 이상 사용할 수 없습니다. – cecode

2

종속성으로 봄 부팅 응용 프로그램을 사용하는 방법에 대한 솔루션을 변경하는 좋은 문서가있다.

기본적으로, 당신 받는다는 빌드에서이 추가 :

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 
     <configuration> 
      <classifier>exec</classifier> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

이 기본 jar 유물 (표준 받는다는 빌드에 내장 될 것 하나)의 원인이됩니다 일반적으로 구조화 할, 당신이 의존 할 수 있도록 spring-boot-maven-plugin은 jar 파일을 exec 분류자를 사용하여 두 번째 이슈로 재 패키징합니다.