2019년 3월 5일 화요일

[spring boot] 스프링부트에서 외부jar파일 추가 방법(배포시에도 정상적으로 추가됨)

[spring boot] method of including external jar on spring boot maven project

스프링부트에서 외부jar파일 추가 방법(배포시에도 정상적으로 추가됨)

1. 아래 이미지 처럼, 프로젝트에 lib 폴더 생성 후, 외부jar를 추가한다.
2. 아래 이미지 우측처럼, pom.xml 에,

<properties>
         ...
<webapp.lib>${basedir}/lib</webapp.lib>
</properties>

추가 후,

<dependencies>
<dependency>
<groupId>external</groupId>
<artifactId>external</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${webapp.lib}/external.jar</systemPath>
</dependency>
</dependencies>

를 추가해준다. (주의] scope 는 system이다.







설정후, 프로젝트 클린&빌드를 한다.

여기까지 설정하면,
프로젝트에서 외부jar파일을 프로젝트에 포함되어 프로젝트가 해당 jar를 인식한다.

스프링부트의 boot dashboard 상으로 local실행시에 외부 jar가 빌드시 프로젝트내에 추가되어 잘 실행된다.

그러나, 배포를 위해 maven install 시에는, 설정한 jar파일들이 프로젝트의 WEB-INF/classes 폴더 (기본설정값) 로 저장되어, 배포시 외부jar를 사용하는 class에서 org.springframework.beans.factory.BeanCreationException: 
을 발생 시킨다.

따라서, 외부jar를 maven install 시, WEB-INF/lib 폴더에 저장되도록
Build Path > Configure Build Path... 에서 설정 해 줘야한다.

아래 그림처럼 설정한다.(지운부분은 프로젝트명 영역)



프로젝트에 추가한 lib 폴더를 우측 Add Folder 버튼을 이용해서 추가해주고,
Output folder: 를 선택 후, 우측에 활성화된 Edit 버튼을 이용해서 해당 프로젝트의
project/target/project/WEB-INF/lib 를 선택하고
Apply로 적용해 주면 설정 끝.

프로젝특 의 target 폴더 내의 모든 파일과 폴더를 삭제후, 프로젝트 클린&빌드 후,
maven install을 실행 하게 되면, 생성된 배포 war 파일이 만들어지는데,

해당 war 파일을 열어보면, WEB-INF/lib 폴더에 저장됨을 확인 할 수 있고,

tomcat8/webapp 폴더에 배포시, 정상실행된다.












댓글 없음:

댓글 쓰기