Files
gradle-examples/doc/05_플러그인.md
2025-02-22 01:13:24 +09:00

172 lines
4.6 KiB
Markdown

# 플러그인
Gradle의 플러그인은 프로젝트의 빌드 및 관리를 확장하는 강력한 기능을 제공한다. Gradle은 기본적인 빌드 기능을 제공하지만, 플러그인을 사용하면 프로젝트에 특정 기능을 추가하고, 빌드 스크립트에서 불필요한 반복을 줄일 수 있다. 예를 들어, Java 프로젝트를 빌드하거나, Kotlin을 지원하거나, 애플리케이션을 패키징하는 등의 작업을 자동화할 수 있다.
### 플러그인의 종류
Gradle 플러그인은 크게 두 가지로 나뉜다.
- **빌드 스크립트에 포함된 로컬 플러그인**
- 프로젝트 내에서 직접 정의하여 사용하는 플러그인
- **외부 저장소에서 제공하는 공식 플러그인 및 커스텀 플러그인**
- Gradle 공식 플러그인이나 외부 개발자가 만든 플러그인
## Gradle 플러그인 적용 방법
Gradle에서 플러그인을 적용하는 방법은 크게 두 가지가 있다.
### `plugins` 블록 사용
Kotlin DSL(`build.gradle.kts`)에서 플러그인을 적용하는 방식이다.
```kotlin
plugins {
id("java") // Java 프로젝트를 위한 플러그인
id("org.jetbrains.kotlin.jvm") version "1.8.0" // Kotlin JVM 플러그인
}
```
### `apply` 함수 사용
이전 Gradle 방식으로, 현재는 `plugins` 블록을 사용하는 것이 권장된다.
```kotlin
apply(plugin = "java")
apply(plugin = "org.jetbrains.kotlin.jvm")
```
## Gradle의 공식 플러그인
Gradle은 다양한 공식 플러그인을 제공하며, 각 플러그인은 특정한 목적을 위해 사용된다.
### Java 플러그인 (`java`)
Java 애플리케이션을 개발할 때 사용하는 플러그인으로, 컴파일, 테스트, JAR 패키징 등의 기능을 제공한다.
```kotlin
plugins {
id("java")
}
```
기본적으로 제공하는 태스크:
- `compileJava`: Java 코드 컴파일
- `processResources`: 리소스 처리
- `jar`: JAR 파일 생성
- `test`: JUnit 등의 프레임워크로 테스트 실행
### Java Library 플러그인 (`java-library`)
라이브러리 형태의 Java 프로젝트를 위한 플러그인으로, `java` 플러그인보다 좀 더 세분화된 의존성 관리를 제공한다.
```kotlin
plugins {
id("java-library")
}
```
**차이점:**
- `api` 의존성을 사용하여 다른 모듈에서도 접근 가능하게 설정할 수 있다.
- `implementation``api`의 차이를 명확하게 구분하여, 라이브러리 프로젝트에 적합하다.
### Application 플러그인 (`application`)
실행 가능한 애플리케이션을 개발할 때 사용하는 플러그인으로, 실행 가능한 JAR 파일을 생성하고, `mainClass`를 지정할 수 있다.
```kotlin
plugins {
id("application")
}
application {
mainClass.set("com.example.MainKt")
}
```
제공 테스크 :
- `run`: 애플리케이션 실행
- `installDist`: 실행 가능한 패키지 생성
- `distZip`: ZIP 파일로 애플리케이션 배포
### Maven Publish 플러그인 (`maven-publish`)
라이브러리를 Maven 중앙 저장소 또는 내부 Nexus, Artifactory 등의 저장소에 배포할 때 사용한다.
```kotlin
plugins {
id("maven-publish")
}
publishing {
publications {
create<MavenPublication>("maven") {
groupId = "com.example"
artifactId = "my-library"
version = "1.0.0"
from(components["java"])
}
}
}
```
### Android 플러그인 (`com.android.application`)
Android 애플리케이션을 개발할 때 사용하는 플러그인이다.
```kotlin
plugins {
id("com.android.application")
id("kotlin-android")
}
```
- Android 프로젝트 빌드 및 패키징
- `AndroidManifest.xml` 및 리소스 처리
- APK 생성
### Kotlin 플러그인 (`org.jetbrains.kotlin.jvm`)
Kotlin을 사용한 JVM 애플리케이션을 개발할 때 사용한다.
적용 방법:
```kotlin
plugins {
id("org.jetbrains.kotlin.jvm") version "1.8.0"
}
```
기본 제공 태스크:
- Kotlin 코드 컴파일 (`compileKotlin`)
- Kotlin 테스트 실행 (`test`)
- JAR 파일 생성 (`jar`)
### Java Gradle Plugin (`java-gradle-plugin`)
Gradle 플러그인을 직접 개발할 때 사용하는 플러그인이다.
```kotlin
plugins {
id("java-gradle-plugin")
}
```
제공 기능:
- Gradle 플러그인 코드 작성 및 빌드
- 플러그인 테스트 및 배포
---
[Gradle Plugin Portal](https://plugins.gradle.org/)
[플러그인](https://docs.gradle.org/current/userguide/plugin_reference.html#plugin_reference)