소프트웨어 개발에서 프로젝트 관리와 배포는 중요한 과정입니다.
특히, 대규모 프로젝트에서는 빌드와 배포를 자동화하는 도구가 필수적입니다.
여기에서는 Gradle의 기본 개념과 함께 Maven Publish 플러그인을 활용한 배포 과정을 살펴보겠습니다.
Gradle이란?
Gradle은 빌드 자동화 도구로, 소스 코드 컴파일, 테스트 실행, 배포 등의 작업을 효율적으로 관리합니다.
작업을 유향 비순환 그래프(DAG)로 모델링하여 작업 간 의존성을 효율적으로 관리하며, 다양한 유형의 소프트웨어 프로젝트를 지원하는 유연성을 제공합니다.
Ant와 Maven의 장점을 결합하여 탄생한 도구로, 다양한 언어와 플랫폼에서 사용할 수 있습니다.
주요 역할
- 프로젝트 관리:
- 의존성(dependencies) 추가 및 관리.
- 멀티 프로젝트 구성 및 관리.
- 빌드 자동화:
- 컴파일, 테스트, 패키징 등의 작업을 자동으로 처리.
- 유연한 확장성:
- 플러그인을 통해 다양한 기능 추가 가능.
- 예를 들어, Java 프로젝트를 위한
java
플러그인, Spring Boot 프로젝트를 지원하는org.springframework.boot
플러그인, 또는 Kotlin 개발을 돕는kotlin
플러그인 등이 있습니다.
플러그인을 사용하는 방법은 간단합니다.plugins
블록에 원하는 플러그인을 선언하면 해당 기능이 활성화됩니다.
- 증분 빌드와 병렬 처리:
- 필요한 작업만 수행하여 빌드 속도를 최적화.
Maven Publish 플러그인
Maven Publish 플러그인은 프로젝트의 빌드 결과물을 Maven 형식으로 배포할 수 있도록 도와줍니다.
이전에는 maven
플러그인이 사용되었으나, 7.0부터는 더 유연하고 향상된 기능을 제공하는 maven-publish
플러그인이 권장되고 있습니다.
이를 통해 생성된 라이브러리를 로컬 또는 원격 저장소에 업로드하고 다른 프로젝트에서 사용할 수 있습니다.
주요 기능
- 아티팩트 생성:
.jar
,.pom
파일 등 결과물을 생성.
- 의존성 메타데이터 포함:
- 프로젝트 의존성을 포함한
pom.xml
생성.
- 프로젝트 의존성을 포함한
- 배포 자동화:
- 로컬 디렉토리나 중앙 저장소로 배포. 로컬 저장소는 일반적으로 테스트용으로 사용되며, 퍼블리싱된 결과물을 빠르게 확인할 수 있는 장점이 있습니다.
- 반면, 중앙 저장소는 팀 또는 외부 개발자와 라이브러리를 공유할 때 사용됩니다. 예를 들어, 로컬 저장소는
build/repo
와 같은 경로로 설정할 수 있고, 중앙 저장소는 Maven Central이나 Nexus Repository Manager와 같은 원격 서비스를 활용합니다.
Maven Publish 플러그인 설정 방법
Maven 방식으로 배포하려면 maven-publish
플러그인을 추가하고 설정해야 합니다.
1. 플러그인 추가
2. 퍼블리싱 블록 구성
publishing
블록에서 배포 대상과 아티팩트를 정의합니다.
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId = 'com.example'
artifactId = 'my-library'
version = '1.0.0'
artifact sourceJar
artifact javadocJar
}
}
repositories {
maven {
name = "localRepo"
url = uri("${buildDir}/repo")
}
}
}
3. 소스 및 Javadoc JAR 생성
소스 코드와 Javadoc을 포함하려면 별도의 태스크를 추가합니다.
task sourceJar(type: Jar) {
from sourceSets.main.allSource
archiveClassifier.set('sources')
}
task javadocJar(type: Jar) {
from javadoc
archiveClassifier.set('javadoc')
}
4. 퍼블리싱 실행
아래 명령어를 실행하면 로컬 저장소에 결과물이 배포됩니다.
./gradlew publish
원격 저장소로 배포하기
원격 저장소에 배포하려면 인증 정보와 URL을 추가로 설정해야 합니다.
publishing {
repositories {
maven {
name = "centralRepo"
url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
credentials {
username = "your-username"
password = "your-password"
}
}
}
}
퍼블리싱 결과
배포 후 다음과 같은 파일들이 생성됩니다:
.jar
- 프로젝트를 빌드한 결과물로, 실행 가능한 코드 또는 라이브러리를 포함합니다.-sources.jar
- 소스 코드가 포함된 파일로, 다른 개발자가 코드를 참고하거나 디버깅할 때 유용합니다.-javadoc.jar
- 생성된 Javadoc 문서로, API 문서를 제공하여 사용자가 라이브러리를 이해하는 데 도움을 줍니다.pom.xml
- 프로젝트의 의존성 및 메타데이터를 포함하는 Maven 표준 형식 파일로, 다른 프로젝트에서 이 라이브러리를 활용할 수 있도록 설정 정보를 제공합니다.
'ETC' 카테고리의 다른 글
[IDE] intellij 외부 라이브러리 검색 (0) | 2025.03.26 |
---|---|
Vault? Google Vault와의 차이점 (1) | 2025.01.17 |
2024년 회고: 성장의 발판을 마련한 한 해 (0) | 2025.01.02 |
IntelliJ IDEA 플러그인 개발을 위한 핵심 용어와 개념 정리 (0) | 2024.12.28 |
한글 코딩 (2) | 2024.12.27 |