2016-11-16 10 views
1

빌드 jar 파일의 구조를 변경 한 후 기존의 Spring-Boot 애플리케이션에서 새 애플리케이션으로 클래스를 가져 오는 데 문제가 있습니다.스프링 부트 1.4 애플리케이션에서 maven 의존성 가져 오기

그들은 응용 프로그램 클래스가 BART-INF/classes에 있고 jar 파일의 루트에 있지 않도록 jar 파일을 변경했습니다.

그러나이 Spring-boot 응용 프로그램에 대한 일반적인 maven 종속성이있을 때이 응용 프로그램과 새 응용 프로그램의 새 클래스로 기존 클래스를 가져올 수 없습니다. 그들은 구조 ...

+2

당신은 처음부터 다른 봄 부팅 항아리에 스프링 부팅 단지를 포함하면 안

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

또는 Gradle을 위해이 같은

. –

+0

응용 프로그램간에 공유되는 코드가 있으면 별도의 라이브러리 프로젝트에 있어야합니다. – OrangeDog

답변

3

여기에 해결책은 당신이 두 응용 프로그램에서에 따라하고있는 클래스는 별도의 프로젝트에서 사용할 수 있도록 코드를 리팩토링하는 것입니다을 변경하기 전에

그것은 잘 작동했다.

이제 두 프로젝트의 종속성 가져 이러한 클래스를 사용할 수 있습니다

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>example-shared</artifactId> 
</dependency> 

당신이 새로 만든 공유 프로젝트에서 봄 부팅 받는다는 플러그인을 사용하지 있는지 확인을하고 당신은 아마 안 스프링 부트 스타터는 필요하지 않을 수도있는 많은 의존성을로드하기 때문에 사용하십시오.

+0

네, 아마 그것이 올바른 길인지 알 것입니다. 우리는 REST-API를 Spring-Boot 애플리케이션으로 만들고 객체를 애플리케이션 내부의 POST 메소드에 대한 입력으로 정의했습니다. 따라서 호출 응용 프로그램에서도 정의 된 객체를 사용하기 위해 API에 대한 maven-dependency를 쉽게 가질 수있었습니다. 스프링 부트가 jar 파일의 레이아웃을 버전에서 변경하기 전까지는 잘되었습니다. 1.4. 그래서 버전 1.4 이후에도 같은 방식으로 작동 할 수 있는지 궁금했습니다. – runesr

0

실제로 스프링 부트 응용 프로그램을 종속성으로 사용할 수 있음을 알았습니다. 비록 그것이 가장 가능성이 높습니다 권장되지 않습니다. 그러나 어떤 경우에는 단지 더 쉽게 만듭니다. 이 솔루션은 실행 파일 아카이브를 사용할 수 없음을 의미합니다.

"실행 가능 아카이브를 BOOT-INF/classes의 실행 가능한 jar 형식 패키지 응용 프로그램 클래스와 같이 종속성으로 사용할 수 없으므로 실행 가능 jar가 종속성으로 사용될 때 해당 실행 파일을 찾을 수 없습니다."

제 질문에 대한 해결책은 spring-boot-maven-plugin에 구성 분류자를 포함시키는 것입니다. 메이븐이 같이 :

bootRepackage { 
classifier = 'exec' 
}