SW 개발/Spring

Spring Boot, Maven 기반 프로젝트에서 로컬 .JAR 라이브러리 추가하기

지단로보트 2021. 12. 15. 14:36

개요

  • 일정에 쫓겨 프로젝트를 진행하다보면, 사용된 주요 라이브러리의 버그로 예상하지 못한 이슈에 봉착할 때가 있다. 이 경우, 선택지는 2개인데 첫번째, 라이브러리 저장소를 포크해서 이슈를 수정한 제작자에게 PR을 요청하고 기다리는 것, 두번째, 일단 급한대로 내가 직접 고쳐서 로컬 .JAR로 빌드하는 것이다. 이번 글에서는 두번째 방법을 위한 Maven 기반 프로젝트에 로컬 .JAR 파일을 추가하는 방법을 설명하고자 한다.

라이브러리 커스텀 빌드

  • 아래는 이슈를 수정할 라이브러리를 클로닝하여 커스텀 빌드하는 예이다.
# JobRunr 라이브러리 저장소 클로닝
$ git clone https://github.com/jobrunr/jobrunr

# 이슈 수정 후 커스팀 빌드
# 생성된 .jar 파일은 내 프로젝트의 /resources/libs 폴더에 복사
$ gradlew jar

pom.xml

  • Spring Boot는 빌드시 spring-boot-maven-plugin 플러그인을 사용한다. 플러그인의 includeSystemScope 옵션을 true로 활성화해야 로컬 .JAR 파일을 프로젝트에 추가할 수 있다.
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>
  • 만약, 로컬 .JAR 파일이 기존 추가된 라이브러리와 중복된다면 기존 것을 명시적으로 제외 조치해주어야 한다.
<dependency>
    <groupId>org.jobrunr</groupId>
    <artifactId>jobrunr-spring-boot-starter</artifactId>
    <version>4.0.4</version>
    <exclusions>
        <exclusion>
            <groupId>org.jobrunr</groupId>
            <artifactId>jobrunr</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 마지막으로 로컬 .JAR 파일을 추가해주면 된다. 반드시 scope 옵션은 system으로 설정해야 한다.
<dependency>
    <groupId>org.jobrunr</groupId>
    <artifactId>jobrunr</artifactId>
    <version>4.0.4</version>
    <scope>system</scope>
    <systemPath>${pom.basedir}/src/main/resources/libs/jobrunr-4.0.4-bug-fixed.jar</systemPath>
</dependency>

참고 글