IT/개발지식

jitPack으로 라이브러리 배포하기

김솔샤르 2022. 10. 24. 22:25

내가 개발한 무언가를 라이브러리로 만들어서 배포하고 싶을때 jitPack을 활용하면 간단하게 할 수 있다. 그런데 불행히도 공식 문서가 약간 부족한 느낌이고 블로그도 제대로 정리된게 없는것 같아 몇 자 적어본다.

 

1. 배포할 라이브러리 개발

우선 Github Repository를 만들어서 코드를 올린다. 여기까지는 되어있어야 한다. 예제로 간단히 오늘 날짜를 조회할 수 있는 DataService를 만들어봤다고 치자. (언어는 코틀린이다.)

@Component
class DateService {
    fun getBaseDate(): LocalDate {
        return LocalDate.now()
    }

    fun getBaseDateTime(): LocalDateTime {
        return LocalDateTime.now()
    }
}

 

2. build.gradle 설정

maven publish 플러그인 추가

plugins {
	id("org.springframework.boot") version "2.7.4"
	id("io.spring.dependency-management") version "1.0.14.RELEASE"
	id("maven-publish") //추가
	kotlin("jvm") version "1.6.21"
	kotlin("plugin.spring") version "1.6.21"
}

 

Archive(jar file) classifier 제거

빌드 결과물에 -plain 같이 의도치 않은 postfix가 자꾸 붙어서 강제로 제거해줬다. 

tasks.jar {
	enabled = true
	// Remove `plain` postfix from jar file name
	archiveClassifier.set("")
}

 

Publish 설정

아래 Repository에 방문해보면 전체 소스가 있다.

publishing {
	repositories {
		maven {
			url = uri("https://github.com/morot2/date-util")
		}
	}
	publications {
		register("mavenJava", MavenPublication::class) {
			from(components["java"])
			artifact(sourcesJar.get())
		}
	}
}

 

3. Release 생성

Github Repository가면 우측에서 Release를 확인할 수 있다. 아직 생성한 Release가 없으면 새로 만들면 된다. 이건가? 하고 몇 번 눌러보면 간단히 새로운 Release Tag를 생성할 수 있다.

 

4. jitPack으로 패키지 등록

여기까지 했으면 https://jitpack.io/ 에 접속해서 패키지를 등록하자. 메인에 크게 input box가 하나 있는데 여기에 repository 주소를 넣으면 된다. github.com/morot/date-util에서 github.com~ 이하를 넣으면 된다. 그 뒤 Look up을 누르면 알아서 내 Repository를 뒤져 최신 Release를 패키지로 등록해준다.

만약 빌드 중 오류가 발생하면 Log 아이콘이 빨간색으로 뜬다. Report를 눌러서 어느 부분에 문제가 있었는지 확인할 수 있다. 성공적으로 등록됐다면 Get it 버튼이 뜰 것이다. 누르면 라이브러리 의존 설정 코드가 복사된다.

 

5. 적용(사용할 프로젝트)

패키지가 잘 등록되었는지 직접 다른 프로젝트에 적용해보자. 우선 jitPack Maven Repository를 추가해준다.

repositories {
	mavenCentral()
	maven{
		url = uri("https://jitpack.io")
	}
}

 

그 다음 라이브러리 의존성을 추가해준다. 위(jitPack 메인)에서 Get it 버튼을 눌러서 복사하면 된다.

implementation("com.github.morot2:date-util:1.0.3")

 

이제 끝이다. 아래와 같이 DataService 라이브러리를 잘 불러와서 코드에서 사용할 수 있는지 확인해보면 된다.

import org.springframework.stereotype.Component
import com.solshar.util.date.DateService
import java.time.LocalDate

@Component
class Producer(val dateService: DateService){
    
    fun getYesterday(): LocalDate {
        val today = dateService.getBaseDate()
        return today.minusDays(1)
    }
반응형