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

4.6 KiB

플러그인

Gradle의 플러그인은 프로젝트의 빌드 및 관리를 확장하는 강력한 기능을 제공한다. Gradle은 기본적인 빌드 기능을 제공하지만, 플러그인을 사용하면 프로젝트에 특정 기능을 추가하고, 빌드 스크립트에서 불필요한 반복을 줄일 수 있다. 예를 들어, Java 프로젝트를 빌드하거나, Kotlin을 지원하거나, 애플리케이션을 패키징하는 등의 작업을 자동화할 수 있다.

플러그인의 종류

Gradle 플러그인은 크게 두 가지로 나뉜다.

  • 빌드 스크립트에 포함된 로컬 플러그인
    • 프로젝트 내에서 직접 정의하여 사용하는 플러그인
  • 외부 저장소에서 제공하는 공식 플러그인 및 커스텀 플러그인
    • Gradle 공식 플러그인이나 외부 개발자가 만든 플러그인

Gradle 플러그인 적용 방법

Gradle에서 플러그인을 적용하는 방법은 크게 두 가지가 있다.

plugins 블록 사용

Kotlin DSL(build.gradle.kts)에서 플러그인을 적용하는 방식이다.

plugins {
    id("java")  // Java 프로젝트를 위한 플러그인
    id("org.jetbrains.kotlin.jvm") version "1.8.0"  // Kotlin JVM 플러그인
}

apply 함수 사용

이전 Gradle 방식으로, 현재는 plugins 블록을 사용하는 것이 권장된다.

apply(plugin = "java")
apply(plugin = "org.jetbrains.kotlin.jvm")

Gradle의 공식 플러그인

Gradle은 다양한 공식 플러그인을 제공하며, 각 플러그인은 특정한 목적을 위해 사용된다.

Java 플러그인 (java)

Java 애플리케이션을 개발할 때 사용하는 플러그인으로, 컴파일, 테스트, JAR 패키징 등의 기능을 제공한다.

plugins {
    id("java")
}

기본적으로 제공하는 태스크:

  • compileJava: Java 코드 컴파일
  • processResources: 리소스 처리
  • jar: JAR 파일 생성
  • test: JUnit 등의 프레임워크로 테스트 실행

Java Library 플러그인 (java-library)

라이브러리 형태의 Java 프로젝트를 위한 플러그인으로, java 플러그인보다 좀 더 세분화된 의존성 관리를 제공한다.

plugins {
    id("java-library")
}

차이점:

  • api 의존성을 사용하여 다른 모듈에서도 접근 가능하게 설정할 수 있다.
  • implementationapi의 차이를 명확하게 구분하여, 라이브러리 프로젝트에 적합하다.

Application 플러그인 (application)

실행 가능한 애플리케이션을 개발할 때 사용하는 플러그인으로, 실행 가능한 JAR 파일을 생성하고, mainClass를 지정할 수 있다.

plugins {
    id("application")
}

application {
    mainClass.set("com.example.MainKt")
}

제공 테스크 :

  • run: 애플리케이션 실행
  • installDist: 실행 가능한 패키지 생성
  • distZip: ZIP 파일로 애플리케이션 배포

Maven Publish 플러그인 (maven-publish)

라이브러리를 Maven 중앙 저장소 또는 내부 Nexus, Artifactory 등의 저장소에 배포할 때 사용한다.

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 애플리케이션을 개발할 때 사용하는 플러그인이다.

plugins {
    id("com.android.application")
    id("kotlin-android")
}
  • Android 프로젝트 빌드 및 패키징
  • AndroidManifest.xml 및 리소스 처리
  • APK 생성

Kotlin 플러그인 (org.jetbrains.kotlin.jvm)

Kotlin을 사용한 JVM 애플리케이션을 개발할 때 사용한다.

적용 방법:

plugins {
    id("org.jetbrains.kotlin.jvm") version "1.8.0"
}

기본 제공 태스크:

  • Kotlin 코드 컴파일 (compileKotlin)
  • Kotlin 테스트 실행 (test)
  • JAR 파일 생성 (jar)

Java Gradle Plugin (java-gradle-plugin)

Gradle 플러그인을 직접 개발할 때 사용하는 플러그인이다.

plugins {
    id("java-gradle-plugin")
}

제공 기능:

  • Gradle 플러그인 코드 작성 및 빌드
  • 플러그인 테스트 및 배포

Gradle Plugin Portal

플러그인