ecsimsw

JitPack 으로 자바 라이브러리 배포하기 본문

JitPack 으로 자바 라이브러리 배포하기

JinHwan Kim 2022. 1. 24. 03:40

결과를 먼저 보면..

원했던 결과부터 소개하고자 한다. 내 라이브러리를 만들어 사람들한테 소개하는 것. 딱 아래처럼 사용자들이 gradle이나 maven의 dependency로 내가 만든 모듈을 import 해 사용하도록 하고 싶었다.

 

dependencies {
    ...
    implementation 'com.github.ecsimsw:fast-crud:0.0.1'
}

 

maven central repository는 절차가 까다로워, 좀 더 편하게 jitpack을 사용하기로 했고 Spring boot 모듈을 사용했기 때문에 생겼던 문제들과 해결 팁을 소개하고자 한다.

 

(예시에서 나온 fast-crud가 이번에 만들어 배포한 것인데, Spring boot - JPA 프로젝트에서 Entity에 어노테이션 하나만 달면 엔티티의 CRUD에 해당하는 API를 자동으로 생성해주는 라이브러리를 만들어 보았다. 다음 글에서 다시 사용 방법과 함께 소개하겠다. 😄)

 

JitPack 사용 방법

JitPack을 사용하는 것은 엄청 간단하다. JVM 라이브러리 배포 플랫폼인데, 까다로운 인증이나 설정없이 JitPack에서 원하는 build 결과물만 내놓는 프로젝트라면 해당 Git 레포지토리 존재만으로도 배포할 수 있도록 한다.

 

1. 빌드가 원할한 프로젝트를 Git에 올려둔다.

 

2. JitPack[https://jitpack.io]에 들어가서 해당 프로젝트의 레포지토리를 검색한다. (사용자명/레포지토리명)

 

 

 

3. 원하는 version (commit 또는 release 단위)을 확인하고 Get it을 누르고 Log가 나올 때까지 기다린다.

 

4. 아래 그림의 위 버전처럼 Log가 초록색 보고서가 뜨면 성공, 아래 버전처럼 빨간색 보고서가 나오면 실패이다. 실패인 경우 빨간 보고서를 클릭하여 build 과정에서 어떤 문제가 있었는지 확인한다.

 

 

 

5. 성공했다면 그 아래 How to를 확인하여 본인 빌드 툴에 맞는 의존성 추가 방법에 따라 추가한다. 

 

 

 

Tag라고 표시된 version에는 위 사진 속 1884ef8e1d처럼 해당 commit id 또는 tag 값을 넣으면 된다. (아래가 내가 생성한 Tag인데, 잘 모르겠다면 Commit Id로 해도 좋다)

 

 

6. Build하고 import 결과를 확인한다.

 

 

 

확인해야 할 것, 특히 Spring boot 프로젝트에서

사실 jitPack 사용 방법 자체는 다른 블로그나 공식 홈페이지에서 워낙 잘 소개되어 있다. 그보다 이 글에서 소개하고 싶은 부분은, JitPack 배포에 문제가 있을 시 해볼만한 팁을 주고 싶었다. 특히 Spring boot 프로젝트라면 더 집중하면 좋을 것 같다.

 

1. Build 자체가 제대로 되는지 확인할 것

 

가장 우선되어야 할 것이다. 프로젝트 build 자체가 제대로 되고 있는지 확인해야 한다. build가 제대로 되고 있는지, local에서만 확인하고 변경 사항을 remote에 push하지 않은건 아닌지, clean -> build로 이전 빌드 잔여물이 남아있던 것은 아닌지 확인한다.

 

2. Jar 파일이 제대로 import 되는지 확인할 것

 

두번째는 build로 생성한 jar 파일이 제대로 import 되는지 확인해야 한다. 단순히 'jar 파일이 생성되고, 실행이 가능하다'만 확인하지 말고 실제로 sample 프로젝트를 생성해서 해당 jar 파일이 import가 되는지, 사용에 문제가 있는 것은 아닌지 확인해봐야 한다.

 

예를 들면 기본 세팅에서 Gradle - Spring boot 프로젝트의 경우 '-.jar' 와 '-plain.jar' 가 나올 것이고, 이 둘은 포함된 정보가 다르다. 간단히 설명하면 '-plain.jar'은 프로젝트에서 작성된 클래스 파일만을 포함하고, '-.jar'은 그 외 모든 의존성까지 포함되어 실행 가능한 상태의 파일을 말한다. 이는 fat jar, uber jar이라고 불리니 추가 정보가 필요하다면 해당 키워드로 검색하면 좋을 것 같다.

 

그래서 이 fat jar 파일 자체를 import 해서 사용이 가능한지 확인해보는 것이 좋다. -plain.jar 파일은 import가 정상이어도, -.jar 파일이 import가 제대로 안된다면 소용없다. JitPack은 -.jar 파일을 원한다.

 

3. 내가 성공한 환경

 

우선 꼭 Spring boot 프로젝트를 라이브러리로 배포해야 하는지 확인한다. Spring boot Docs에 따르면 Spring boot application은 dependency로 사용되는 것을 의도하지 않았다고 한다.

 

혹시 그래도 어쩔 수 없는 상황이고, JitPack 사용해야하는 상황인 독자를 위해 내가 성공한 환경을 소개하고자 한다. 사실 2번 Jar 파일 문제만 해결한다면 특별한 문제가 없을 것 같긴하다.

 

- Maven 과 executable jar

 

Maven을 사용했고 Pom.xml에 아래처럼 executable jar을 위한 설정을 추가해줬다. 마찬가지로 2번처럼 직접 import해서 사용 가능한지 확인해야 한다.

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

 

- Java 8

 

나는 자바8을 사용했다. 다른 설정없이 8까지 문제없이 빌드가 가능하고, 이 JitPack issue를 보면 추가 설정을 작성으로 그 이상 버전도 가능한 것 같긴하다.

 

일단 빌드를 확인하고자 하는 경우, 그리고 당장 8 이상을 필요로 하지 않는 경우는 우선 Java version을 8로 잡고 JitPack  빌드가 가능한지 확인해보자.

 <properties>
    <java.version>8</java.version>
</properties>

 

- 사용 측

 

위 두 설정을 잡아준 것 이외에는 특별한 것 없다. 사용 측에서는 Maven, Gradle, 자바 버전 등등 특별히 환경에 문제가 되는 부분은 없었다.

 

 

Comments