# 플러그인 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("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)