[Gradle]그래들 알아보기 8 - Plugin Basics
SW개발/Spring

[Gradle]그래들 알아보기 8 - Plugin Basics

https://docs.gradle.org/current/userguide/plugin_basics.html

 

Plugin Basics

Gradle is built on a plugin system. Gradle itself is primarily composed of infrastructure, such as a sophisticated dependency resolution engine. The rest of its functionality comes from plugins. A plugin is a piece of software that provides additional func

docs.gradle.org

 

Plugin Basics

그래들은 플러그인 시스템을 기반으로 구축되었습니다. 그래들 자체는 매우 복잡한 의존성 해결 엔진과 같은 인프라로 구성되어 있습니다. 나머지 기능은 전부 플러그인에서 나옵니다.

플러그인은 그래들 빌드 시스템에 추가적인 기능을 제공하는 소프트웨어 입니다.

 

 

플러그인은 그래들 빌드 스크립트에 적용하여 새로운 태스크나 설정을 추가하거나 기타 빌드 관련 기능을 추가할 수 있습니다.

 

The Java Library Plugin - (java-library)

자바 라이브러리를 빌드하고 정의하는데 사용됩니다. compileJava 태스크로 자바 코드를 컴파일하고, javadoc 태스크로 Javadoc을 생성하고, jar 태스크로 JAR 파일을 컴파일된 클래스로 패키징합니다.

The Google Service Gradle Plugin - (com.google.gms:google-services)

googleServices{} 설정 블록과 generateReleaseAssets 태스크를 사용하여 안드로이드 애플리케이션에 Google API와 파이어베이스 서비스를 활성화합니다.

The Gradle Bintray Plugin - (com.jfrom.bintray)

bintray{} 설정 블록을 사용해서 Bintray에 아티펙트를 게시할 수 있습니다.

 

Plugin distribution

플러그인은 3가지 방법으로 배포됩니다.

  1. 코어 플러그인 - 그래들은 코어 플러그인 세트를 개발하고 유지보수합니다. 
  2. 커뮤니티 플러그인 - 그래들 커뮤니티는 Gradle Plugin Portal를 통해 플러그인을 공유합니다.
  3. 로컬 플러그인 - 그래들은 API를 사용하여 커스텀 사용자 정의 플러그인을 만들 수 있습니다.

 

Applying plugins

프로젝트에 플러그인을 적용하면 플러그인이 프로젝트의 기능을 확장할 수 있습니다.

plugin id(글로벌 유니크한 식별자 혹은 이름)를 사용하여 플러그인을 적용할 수 있습니다.

plugins {
    id «plugin id» version «plugin version»
}

 

1. 코어 플러그인

그래들 코어 플러그인은 그래들 배포판 자체에 포함된 플러그인 세트입니다. 이 플러그인들은 프로젝트를 빌드하거나 관리하는데 필수적인 기능들을 제공합니다.

 

핵심 플러그인의 몇가지 예시입니다.

  • java : 자바 프로젝트를 빌드하는데 도움을 줍니다.
  • groovy : Groovy 소스 파일을 컴파일하고 테스트하는데 도움을 줍니다.
  • ear : 엔터프라이즈 애플리케이션에서 EAR 파일을 빌드하는데 도움을 줍니다.

코어 플러그인은 빌드 스크립트에 적용될 때 java 혹은 JavaPlugin과 같이 짧은 이름을 제공한다는 점에서 독특합니다. 또한, 버전이 필요하지 않습니다.

 

java 플러그인 적용 예시 - build.gradle.kts

plugins {
    id("java")
}

 

2. 커뮤니티 플러그인

커뮤니티 플러그인은 그래들 배포판의 일부가 아닌 그래들 커뮤니티에서 개발되는 플러그인입니다. 이 플러그인들은 특정한 상황이나 기술을 사용할 수 있는 기능을 제공합니다.

 

Spring Boot Gradle plugin 패키지는 실행 가능한 JAR나 WAR 아카이브 파일을 패키징하고, Spring Boot Java 애플리케이션을 실행시킵니다.

 

org.springframework.boot 플러그인 적용 예시 - build.gradle.kts

plugins {
    id("org.springframework.boot") version "3.1.5"
}

커뮤니티 플러그인은 Gradle Plugin Portal에 게시되고, 다른 그래들 사용자가 손쉽게 사용하고 발견할 수 있습니다.

 

3. 로컬 플러그인

커스텀 혹은 로컬 플러그인은 특정한 프로젝트나 조직 내부에서 개발하고 사용되어지는 플러그인입니다. 이 플러그인들은 공유되지 않고 특정 조직 내에서 사용됩니다.

 

로컬 플러그인은 공통 빌드 로직을 캡슐화하고, 내부 시스템 또는 도구와의 통합을 제공하거나, 복잡한 기능을 재사용 가능한 컴포넌트로 추상화할 수 있습니다.

 

그래들은 API를 사용하여 커스텀 플러그인을 개발할 수 있는 기능을 제공합니다. 본인만의 플러그인을 만들려면 다음 단계를 따릅니다.

 

1. 플러그인 클래스 정의하기 - (Plugin<Project> 인터페이스를 상속하는 클래스를 만듭니다.)

// Define a 'HelloPlugin' plugin
class HelloPlugin : Plugin<Project> {
    override fun apply(project: Project) {
        // Define the 'hello' task
        val helloTask = project.tasks.register("hello") {
            doLast {
                println("Hello, Gradle!")
            }
        }
    }
}

 

2. 플러그인을 빌드하고 선택적으로 게시하기 - (플러그인 코드가 포함된 JAR 파일을 생성하고 선택적으로 이 JAR를 저장소에 게시하여 다른 프로젝트에서 사용합니다.)

// Publish the plugin
plugins {
    `maven-publish`
}

publishing {
    publications {
        create<MavenPublication>("mavenJava") {
            from(components["java"])
        }
    }
    repositories {
        mavenLocal()
    }
}

 

3. 플러그인 적용 - (플러그인을 사용하려면 plugins{} 빌드 파일 블록에 플러그인 ID와 버전을 포함합니다.)

// Apply the plugin
plugins {
    id("com.example.hello") version "1.0"
}

 

728x90