2025-02-22T01:13:24
This commit is contained in:
173
doc/08_build.gradle.kts.md
Normal file
173
doc/08_build.gradle.kts.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# 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 플러그인은 빌드 시스템의 기능을 확장하는 역할을 한다.
|
||||
|
||||
```kotlin
|
||||
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` → 프로젝트의 버전 정보
|
||||
|
||||
```kotlin
|
||||
group = "com.example"
|
||||
version = "1.0.0"
|
||||
```
|
||||
이 설정을 하면 생성된 JAR 파일의 이름이 `example-1.0.0.jar`처럼 된다.
|
||||
|
||||
|
||||
## `repositories` 블록
|
||||
의존성을 다운로드할 저장소(Repository)를 정의하는 블록이다.
|
||||
Gradle은 기본적으로 **Maven Central** 또는 **JCenter**에서 의존성을 가져온다.
|
||||
|
||||
### **예제**
|
||||
```kotlin
|
||||
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`으로 나뉜다.
|
||||
|
||||
```kotlin
|
||||
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` 플러그인을 사용하는 경우 **애플리케이션의 메인 클래스**를 지정하는 블록이다.
|
||||
|
||||
```kotlin
|
||||
application {
|
||||
mainClass.set("com.example.Main")
|
||||
}
|
||||
```
|
||||
이 설정을 하면 `gradle run`을 실행했을 때 `com.example.Main`가 실행된다.
|
||||
|
||||
|
||||
## `tasks` 블록
|
||||
Gradle에서는 **사용자 정의 태스크**를 만들 수 있다.
|
||||
|
||||
```kotlin
|
||||
tasks.register("hello") {
|
||||
doLast {
|
||||
println("Hello, Gradle!")
|
||||
}
|
||||
}
|
||||
```
|
||||
위 태스크를 실행하려면 다음 명령어를 사용한다.
|
||||
```sh
|
||||
gradle hello
|
||||
```
|
||||
출력:
|
||||
```
|
||||
Hello, Gradle!
|
||||
```
|
||||
|
||||
## `java` 블록 (Java 프로젝트 설정)
|
||||
Java 프로젝트에서 **컴파일 및 JAR 설정을 추가할 때** 사용한다.
|
||||
|
||||
```kotlin
|
||||
java {
|
||||
toolchain {
|
||||
languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
}
|
||||
```
|
||||
- Java 17을 기본 컴파일러 버전으로 설정한다.
|
||||
|
||||
|
||||
## `jar` 블록 (JAR 파일 설정)
|
||||
JAR 파일 생성 시 메타데이터를 추가하는 데 사용한다.
|
||||
|
||||
### **예제**
|
||||
```kotlin
|
||||
tasks.jar {
|
||||
manifest {
|
||||
attributes["Main-Class"] = "com.example.Main"
|
||||
}
|
||||
}
|
||||
```
|
||||
- `Main-Class`를 설정하여 실행 가능한 JAR 파일을 만든다.
|
||||
|
||||
|
||||
## `publishing` 블록 (Maven 배포 설정)
|
||||
Maven 저장소에 배포할 때 사용한다.
|
||||
|
||||
```kotlin
|
||||
publishing {
|
||||
publications {
|
||||
create<MavenPublication>("mavenJava") {
|
||||
from(components["java"])
|
||||
}
|
||||
}
|
||||
repositories {
|
||||
maven {
|
||||
url = uri("https://my.repo.com/releases")
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
- `mavenJava`라는 Maven 아티팩트를 생성하고 지정한 저장소에 업로드할 수 있다.
|
||||
|
||||
|
||||
## `wrapper` 블록 (Gradle Wrapper 설정)
|
||||
Gradle Wrapper의 버전을 관리할 때 사용한다.
|
||||
|
||||
```kotlin
|
||||
tasks.wrapper {
|
||||
gradleVersion = "8.12"
|
||||
distributionType = Wrapper.DistributionType.ALL
|
||||
}
|
||||
```
|
||||
- Gradle 8.12 버전을 사용하도록 설정한다.
|
||||
Reference in New Issue
Block a user