5.2 KiB
5.2 KiB
Gradle Kotlin DSL (build.gradle.kts) 주요 블록
Gradle에서 Kotlin DSL을 사용하면 build.gradle.kts 파일로 프로젝트를 구성할 수 있다.
이 파일에는 빌드 설정, 의존성 관리, 플러그인 추가, 태스크 정의 등의 내용이 포함된다.
| 블록 | 설명 |
|---|---|
plugins |
프로젝트에서 사용할 플러그인을 정의 |
group & version |
프로젝트의 그룹 ID와 버전 정보 설정 |
repositories |
의존성을 다운로드할 저장소 지정 |
dependencies |
프로젝트에서 사용할 라이브러리 추가 |
application |
실행할 mainClass 지정 (application 플러그인 사용 시) |
tasks |
사용자 정의 태스크 추가 |
java |
Java 프로젝트의 컴파일러 버전 설정 |
jar |
JAR 파일의 메타데이터 설정 |
publishing |
프로젝트를 Maven 저장소에 배포 |
wrapper |
Gradle Wrapper의 버전 관리 |
plugins 블록
plugins 블록은 프로젝트에서 사용할 플러그인을 선언하는 곳이다.
Gradle 플러그인은 빌드 시스템의 기능을 확장하는 역할을 한다.
plugins {
java // Java 프로젝트를 위한 플러그인
application // 실행 가능한 애플리케이션을 위한 플러그인
kotlin("jvm") version "1.9.0" // Kotlin JVM 플러그인
}
java→ Java 프로젝트를 빌드하는 데 필요application→ 실행 가능한 애플리케이션을 위한 플러그인kotlin("jvm") version "1.9.0"→ Kotlin JVM 개발을 위한 플러그인
group & version 블록
이 블록은 프로젝트의 그룹 ID와 버전을 정의한다.
group→ 프로젝트를 식별하는 네임스페이스version→ 프로젝트의 버전 정보
group = "com.example"
version = "1.0.0"
이 설정을 하면 생성된 JAR 파일의 이름이 example-1.0.0.jar처럼 된다.
repositories 블록
의존성을 다운로드할 저장소(Repository)를 정의하는 블록이다.
Gradle은 기본적으로 Maven Central 또는 JCenter에서 의존성을 가져온다.
예제
repositories {
mavenCentral()
maven {
url = 'https://your.secure.repo/url'
credentials {
username = 'your-username'
password = 'your-password'
}
}
mavenLocal()
flatDir {
dirs("libs")
}
}
mavenCentral()→ Maven Central 저장소에서 라이브러리를 가져온다.
dependencies 블록
프로젝트에서 사용할 **라이브러리(의존성)**를 추가하는 블록이다.
의존성은 크게 implementation, api, testImplementation으로 나뉜다.
dependencies {
implementation("org.apache.commons:commons-lang3:3.12.0") // 런타임과 컴파일에서 사용
api("com.google.guava:guava:32.0.1-jre") // 외부에서 접근 가능
testImplementation("junit:junit:4.13.2") // 테스트 전용 의존성
}
implementation→ 내부에서만 사용하는 의존성api→ 외부 프로젝트에서도 접근할 수 있는 APItestImplementation→ 테스트 시에만 필요한 의존성
application 블록
application 플러그인을 사용하는 경우 애플리케이션의 메인 클래스를 지정하는 블록이다.
application {
mainClass.set("com.example.Main")
}
이 설정을 하면 gradle run을 실행했을 때 com.example.Main가 실행된다.
tasks 블록
Gradle에서는 사용자 정의 태스크를 만들 수 있다.
tasks.register("hello") {
doLast {
println("Hello, Gradle!")
}
}
위 태스크를 실행하려면 다음 명령어를 사용한다.
gradle hello
출력:
Hello, Gradle!
java 블록 (Java 프로젝트 설정)
Java 프로젝트에서 컴파일 및 JAR 설정을 추가할 때 사용한다.
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}
- Java 17을 기본 컴파일러 버전으로 설정한다.
jar 블록 (JAR 파일 설정)
JAR 파일 생성 시 메타데이터를 추가하는 데 사용한다.
예제
tasks.jar {
manifest {
attributes["Main-Class"] = "com.example.Main"
}
}
Main-Class를 설정하여 실행 가능한 JAR 파일을 만든다.
publishing 블록 (Maven 배포 설정)
Maven 저장소에 배포할 때 사용한다.
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
}
}
repositories {
maven {
url = uri("https://my.repo.com/releases")
}
}
}
mavenJava라는 Maven 아티팩트를 생성하고 지정한 저장소에 업로드할 수 있다.
wrapper 블록 (Gradle Wrapper 설정)
Gradle Wrapper의 버전을 관리할 때 사용한다.
tasks.wrapper {
gradleVersion = "8.12"
distributionType = Wrapper.DistributionType.ALL
}
- Gradle 8.12 버전을 사용하도록 설정한다.