Files
gradle-examples/doc/08_build.gradle.kts.md
2025-02-22 01:13:24 +09:00

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 → 외부 프로젝트에서도 접근할 수 있는 API
  • testImplementation → 테스트 시에만 필요한 의존성

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 버전을 사용하도록 설정한다.