일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- aws
- kotlin querydsl
- kotlin
- Elasticsearch
- Linux
- Spring
- CloudWatch
- IntelliJ
- 정보처리기사실기 기출문제
- CKA
- PETERICA
- AI
- kotlin spring
- MySQL
- 정보처리기사 실기 기출문제
- AWS EKS
- 코틀린 코루틴의 정석
- Pinpoint
- CKA 기출문제
- minikube
- kotlin coroutine
- 공부
- mysql 튜닝
- 기록으로 실력을 쌓자
- 오블완
- 티스토리챌린지
- Kubernetes
- APM
- 정보처리기사 실기
- Java
- Today
- Total
피터의 개발이야기
[Kotlin] Spring 멀티모듈, JAR 파일로 배포하는 방법 본문
ㅁ 들어가며
ㅇ [Kotlin] Spring Boot 멀티모듈 프로젝트 구성하기를 수행하였다.
ㅇ Kotlin 멀티모듈 프로젝트를 개발하다 보면 특정 모듈을 다른 프로젝트에서 재사용하고 싶을 때가 있다.
ㅇ 이때 해당 모듈을 JAR 파일로 배포하면 편리하게 참조할 수 있다.
ㅇ 이 글에서는, Kotlin 멀티모듈 프로젝트에서 Gradle을 설정하여 특정 모듈을 JAR 파일로 배포하는 방법을 정리하였다.
ㅁ 프로젝트 구조
ㅇ 멀티 모듈 프로젝트는 일반적으로 다음과 같은 구조를 가진다
kotlin-multi-module
│
├── build.gradle.kts
├── settings.gradle.kts
│
├── common
│ ├── build.gradle.kts
│ └── src/main/kotlin/com/peterica/common
├── core
│ ├── build.gradle.kts
│ └── src/main/kotlin/com/peterica/core
│
├── rest
│ ├── build.gradle.kts
│ └── src/main/kotlin/com/peterica/rest
│
└── domain
├── build.gradle.kts
└── src/main/kotlin/com/peterica/domain
ㅇ common은 util, enum, error code와 같은 기초 정보를 담고 있다.
ㅇ 여기서는 common을 JAR 파일로 배포한다고 가정하자.
ㅁ 모듈 build.gradle.kts 설정
ㅇ 모듈의 build.gradle.kts 파일을 수정하여 JAR 파일을 생성할 수 있도록 설정한다.
ㅇ manifest으로 메타데이터의 내용을 설정한다.
ㅁ JAR 파일 생성
# 프로젝트 루트에서 gradle 명령어 실행
./gradlew :module-a:build
ㅇ 인텔리제이, 혹은 프로젝트 루트에서 gradle 빌드를 수행 할 수 한다.
ㅇ common/build/libs/ 디렉토리에 JAR 파일이 생성된다.
ㅁ JAR 파일 배포
ㅇ 생성된 로컬 복사, Maven 저장소 등록, Nexus or Artifactory 같은 원격 저장소에 배포할 수도 있다.
로컬 파일 시스템에 복사 후 참조방법
[Spring] springboot 외부 JAR 추가하기에 정리하였다.
Maven 로컬 저장소에 설치
./gradlew :module-a:publishToMavenLocal
ㅇ JAR 파일을 Maven 로컬 저장소에 설치하면, 다른 프로젝트의 build.gradle.kts에서 쉽게 참조할 수 있다.
repositories {
mavenLocal()
}
dependencies {
implementation("com.example:module-a:1.0.0")
}
ㅇ 다른 프로젝트의 build.gradle.kts에서 위와 같이 참조한다.
원격 저장소에 배포하는 방법
ㅇ 원격 저장소로는 일반적으로 Nexus Repository Manager나 Artifactory를 사용한다. 먼저, 원격 저장소에 접근할 수 있는 계정과 URL을 준비해야 한다.
plugins {
kotlin("jvm") version "1.8.0"
`maven-publish`
}
group = "com.example"
version = "1.0.0"
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
}
}
repositories {
maven {
name = "myRepo"
url = uri("http://your-nexus-repo-url/repository/maven-releases/")
credentials {
username = project.findProperty("nexusUsername") as String? ?: "defaultUsername"
password = project.findProperty("nexusPassword") as String? ?: "defaultPassword"
}
}
}
}
Gradle 명령어로 배포
./gradlew :module-a:publish
ㅇ 이 명령어는 module-a를 빌드하고, 설정된 원격 저장소에 JAR 파일을 업로드한다.
다른 프로젝트에서 참조
원격 저장소에 배포된 JAR 파일을 다른 프로젝트에서 참조하려면, 해당 프로젝트의 build.gradle.kts에 다음과 같이 추가한다.
repositories {
maven {
url = uri("http://your-nexus-repo-url/repository/maven-releases/")
}
}
dependencies {
implementation("com.example:module-a:1.0.0")
}
ㅇ 이렇게 설정하면 다른 프로젝트에서 module-a의 기능을 사용할 수 있다.
ㅁ 함께 보면 좋은 사이트
ㅇ 스프링 멀티모듈 나누기 개념 및 실습(메이븐, 그래들)
ㄴ 멀티모듈 구성부터 jar 참조 테스트 수행
ㅇ [Server] 멀티 모듈을 설계하는 관점과 고려사항 with Spring & Gradle
ㄴ 인프콘 2023에서 발표한 내용
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] Kotlin에서 Long 타입이 null일 때 기본값을 설정하는 방법 (1) | 2024.08.28 |
---|---|
[Kotlin] Kotlin과 Builder 패턴 (0) | 2024.08.27 |
[Kotlin] Paging query needs to have a Pageable parameter 문제 해결 (0) | 2024.08.21 |
[Kotlin] Spring Boot 멀티모듈 프로젝트 구성 (0) | 2024.08.18 |
[Kotlin] Kotlin JDSL 문법 정리 (0) | 2024.08.16 |