저는 일반적으로 maven Central을 사용하여 dependency를 관리합니다.
라이브러리를 배포할 때도 당연히 maven Central를 통해 배포 하려했습니다.
하지만 절차가 생각보다 많이 복잡하여 Jitpack을 통해 배포해봤습니다.
Jitpack은 Maven Central과 같은 전통적인 Maven Repository와 다르게 Git 저장소에서 커밋이나 태그 기반으로 라이브러리를 빌드, 배포 할 수 있습니다.
그리고 GitHub와 같이 플랫폼에 공개된 프로젝트라면 간단한 설정만으로도 Jitpack을 통해 Maven, Gradle 프로젝트에 바로 의존성을 추가할 수 있습니다.
지금부터 Jitpack을 통해서 라이브러리를 배포하려합니다.
아래에서 실습을 진행하다 참고 할 수 있게 미리 완성된 build.gradle.kts 파일을 공유하고 시작하겠습니다.
가장 먼저 우리는 maven 저장소에 업로드 할 수 있어야하기 때문에 plugin 설정을 해줘야합니다.
plugins scope에 maven-publish plugin을 추가해줍니다.
플러그인을 추가했다면 이제 build.gradle.kts 파일에서 publishing 함수를 사용할 수 있습니다.
설정한 부분을 간단하게 해석하자면 MavenPublication을 사용하여 Maven 형식으로 프로젝트를 배포한다 선언합니다.
from(components["java"])를 작성 했기에 프로젝트에서 생성된 Java 관련 아티팩트를 Maven 배포 설정에 포함시킵니다.
이 부분이 있어야 실제로 컴파일된 JAR 파일과 같은 아티팩트가 배포됩니다.
일반적으로 jitpack.yml 파일을 굳이 만들 필요는 없다고 하지만 나중에 커스터마이징한 설정을 위해서 미리 만들어 주겠습니다.
일단 프로젝트 가장 상단에 jitpack.yml 파일을 만들어주시면 됩니다.
만들었다면 파일에 jdk 버전과 build script를 넣어주시면 됩니다.
jdk:
- openjdk17
build:
script: ./gradlew clean build
지금까지 작업한 부분을 이제 commit, push 해주시면 됩니다.
그리고 github에 들어가서 repository 우측에 Releases를 새로 하나 만들어줍니다.
jitpack에 들거가서 우리가 좀전에 배포했던 github repository의 주소를 넣고 Look up 버튼을 눌러줍니다.
그러면 배포가 진행 중이거나 완료 된 것을 확인 할 수 있습니다.
배포가 완료 되었다면 로그를 확인하셔도됩니다.
이제 jitpack에 배포가 다 되었습니다.
다른 프로젝트에서 라이브러리를 사용하려면 아래와 같이 repositories scope에 jitpack uri를 등록해야합니다.
그리고 jitpack에서 Step 2. Add the dependency에 있는 내용을 복사한 뒤 build.gradle.kts dependencies에 입력해주면 됩니다.
배포를 했는데 Not found 라는 문구가 뜨며 라이브러리 배포가 실패했습니다.
이유는 jar file을 build 시 kmsl-1.0.0.jar가 생기지 않고 kmsl-1.0.0-plane.jar가
생겨서 발생한 문제였습니다.
그래서 우리는 bootJar로 jar file을 만들 때 plane이라는 문구가 생기지 않게 설정을 해주겠습니다.
build.gradle.kts 파일로 가서 bootJar를 enable false로 설정하고 jar file의 classifier를 제거해주는 작업을 추가하겠습니다.
위와 같이 설정을 하고 재배포를 하게 된다면 external library에 추가된걸 확인할 수 있습니다!
저희는 지금까지 싱글 모듈 형태의 라이브러리 배포하는 방식을 진행했는데 이어서 멀티모듈 방식으로 배포하는 것도 해보겠습니다.
방법은 간단합니다.
구조를 멀티 모듈 구조로 잡은 다음 subprojects에 모듈별로 publishing 설정을 해주면 됩니다.
이렇게 설정을 하면 root gradle build 시 하위 모듈들을 모두 maven에 publishing 하게됩니다.