Gradle-플러그인
플러그인은 작업 집합 일 뿐이며 작업 컴파일, 도메인 개체 설정, 소스 파일 설정 등과 같은 거의 모든 유용한 작업은 플러그인에 의해 처리됩니다. 프로젝트에 플러그인을 적용하면 플러그인이 프로젝트의 기능을 확장 할 수 있습니다. 플러그인은 다음과 같은 작업을 수행 할 수 있습니다.
- 기본 Gradle 모델을 확장합니다 (예 : 구성 할 수있는 새 DSL 요소 추가).
- 변환에 따라 프로젝트를 구성합니다 (예 : 새 작업 추가 또는 합리적인 기본값 구성).
- 특정 구성을 적용합니다 (예 : 조직 저장소 추가 또는 표준 적용).
플러그인 유형
Gradle에는 스크립트 플러그인과 바이너리 플러그인의 두 가지 유형의 플러그인이 있습니다. 스크립트 플러그인은 빌드 조작에 대한 선언적 접근 방식을 제공하는 추가 빌드 스크립트입니다. 일반적으로 빌드 내에서 사용됩니다. 바이너리 플러그인은 플러그인 인터페이스를 구현하고 빌드를 조작하는 프로그래밍 방식을 채택하는 클래스입니다. 바이너리 플러그인은 프로젝트 계층과 함께 빌드 스크립트에 상주하거나 플러그인 JAR에 외부 적으로있을 수 있습니다.
플러그인 적용
Project.apply()API 메서드는 특정 플러그인을 적용하는 데 사용됩니다. 동일한 플러그인을 여러 번 사용할 수 있습니다. 플러그인에는 스크립트 플러그인과 바이너리 플러그인이 있습니다.
스크립트 플러그인
스크립트 플러그인은 로컬 파일 시스템의 스크립트 또는 원격 위치에서 적용 할 수 있습니다. 파일 시스템 위치는 프로젝트 디렉토리에 상대적인 반면 원격 스크립트 위치는 HTTP URL을 지정합니다. 다음 코드 스 니펫을 살펴보십시오. 적용하는 데 사용됩니다other.gradle빌드 스크립트에 플러그인. 이 코드를build.gradle 파일.
apply from: 'other.gradle'
바이너리 플러그인
각 플러그인은 일부 핵심 플러그인이 짧은 이름을 사용하여 적용하고 일부 커뮤니티 플러그인이 플러그인 ID에 대해 정규화 된 이름을 사용하는 플러그인 ID로 식별됩니다. 언젠가 플러그인 클래스를 지정할 수 있습니다.
다음 코드 스 니펫을 살펴보십시오. 타입을 사용하여 자바 플러그인을 적용하는 방법을 보여줍니다. 이 코드를build.gradle 파일.
apply plugin: JavaPlugin
짧은 이름을 사용하여 핵심 플러그인을 적용하려면 다음 코드를 살펴보십시오. 이 코드를build.gradle 파일.
plugins {
id 'java'
}
짧은 이름을 사용하여 커뮤니티 플러그인을 적용하려면 다음 코드를 살펴보십시오. 이 코드를build.gradle 파일.
plugins {
id "com.jfrog.bintray" version "0.4.1"
}
사용자 정의 플러그인 작성
커스텀 플러그인을 생성하는 동안 플러그인 구현을 작성해야합니다. Gradle은 플러그인을 인스턴스화하고 Plugin.apply () 메서드를 사용하여 플러그인 인스턴스를 호출합니다. 다음 샘플에는 프로젝트에 hello 작업을 추가하는 인사말 플러그인이 포함되어 있습니다. 다음 코드를 살펴보십시오. 이 코드를build.gradle 파일.
apply plugin: GreetingPlugin
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') << {
println "Hello from the GreetingPlugin"
}
}
}
위의 스크립트를 실행하려면 다음 코드를 사용하십시오.
C:\> gradle -q hello
산출:
Hello from the GreetingPlugin
빌드에서 입력 받기
대부분의 플러그인에는 빌드 스크립트의 구성 지원이 필요합니다. Gradle 프로젝트에는 플러그인에 전달되는 모든 설정 및 속성을 추적하는 데 도움이되는 관련 ExtensionContainer 개체가 있습니다.
프로젝트에 간단한 확장 개체를 추가해 보겠습니다. 여기에서 인사말을 구성 할 수있는 인사말 확장 개체를 프로젝트에 추가합니다. 이 코드를build.gradle 파일.
apply plugin: GreetingPlugin
greeting.message = 'Hi from Gradle'
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
// Add the 'greeting' extension object
project.extensions.create("greeting", GreetingPluginExtension)
// Add a task that uses the configuration
project.task('hello') << {
println project.greeting.message
}
}
}
class GreetingPluginExtension {
def String message = 'Hello from GreetingPlugin'
}
위의 스크립트를 실행하려면 다음 코드를 사용하십시오.
C:\> gradle -q hello
산출:
Hi from Gradle
이 예에서 GreetingPlugin은 message라는 필드가있는 일반 오래된 Groovy 객체입니다. 확장 개체는 greeting이라는 이름으로 플러그인 목록에 추가됩니다. 그러면이 개체는 확장 개체와 이름이 같은 프로젝트 속성으로 사용할 수있게됩니다.
Gradle은 각 확장 객체에 대한 구성 클로저를 추가하므로 설정을 함께 그룹화 할 수 있습니다. 다음 코드를 살펴보십시오. 이 코드를build.gradle 파일.
apply plugin: GreetingPlugin
greeting {
message = 'Hi'
greeter = 'Gradle'
}
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create("greeting", GreetingPluginExtension)
project.task('hello') << {
println "${project.greeting.message} from ${project.greeting.greeter}"
}
}
}
class GreetingPluginExtension {
String message
String greeter
}
위의 스크립트를 실행하려면 다음 코드를 사용하십시오.
C:\> gradle -q hello
산출:
Hello from Gradle
표준 Gradle 플러그인
Gradle 배포판에 포함 된 다양한 플러그인이 있습니다.
언어 플러그인
이러한 플러그인은 JVM에서 컴파일 및 실행할 수있는 다양한 언어에 대한 지원을 추가합니다.
플러그인 ID | 자동 적용 | 기술 |
---|---|---|
자바 | 자바 기반 | 프로젝트에 Java 컴파일, 테스트 및 번들링 기능을 추가합니다. 다른 많은 Gradle 플러그인의 기반 역할을합니다. |
그루비 | 자바, 그루비 기반 | Groovy 프로젝트 빌드 지원을 추가합니다. |
스칼라 | 자바, 스칼라 기반 | Scala 프로젝트 빌드 지원을 추가합니다. |
개미 | 자바 | Antlr를 사용하여 구문 분석기를 생성하기위한 지원을 추가합니다. |
인큐베이팅 언어 플러그인
이 플러그인은 다양한 언어에 대한 지원을 추가합니다.
플러그인 ID | 자동 적용 | 기술 |
---|---|---|
어셈블러 | - | 프로젝트에 네이티브 어셈블리 언어 기능을 추가합니다. |
씨 | - | 프로젝트에 C 소스 컴파일 기능을 추가합니다. |
cpp | - | 프로젝트에 C ++ 소스 컴파일 기능을 추가합니다. |
목적 -c | - | 프로젝트에 Objective-C 소스 컴파일 기능을 추가합니다. |
목적 -cpp | - | 프로젝트에 Objective-C ++ 소스 컴파일 기능을 추가합니다. |
창 리소스 | - | 네이티브 바이너리에 Windows 리소스를 포함하기위한 지원을 추가합니다. |