Gradle - Plugin
Plugin không là gì ngoài tập hợp các tác vụ, hầu như tất cả các tác vụ hữu ích như tác vụ biên dịch, thiết lập đối tượng miền, thiết lập tệp nguồn, v.v. đều do plugin xử lý. Áp dụng plugin cho một dự án có nghĩa là cho phép plugin mở rộng khả năng của dự án. Các plugin có thể thực hiện những việc như -
- Mở rộng mô hình Gradle cơ bản (ví dụ: thêm các phần tử DSL mới có thể được cấu hình).
- Định cấu hình dự án theo chuyển đổi (ví dụ: thêm nhiệm vụ mới hoặc định cấu hình các giá trị mặc định hợp lý).
- Áp dụng cấu hình cụ thể (ví dụ: thêm kho lưu trữ tổ chức hoặc thực thi các tiêu chuẩn).
Các loại plugin
Có hai loại plugin trong Gradle, plugin script và plugin nhị phân. Phần bổ trợ tập lệnh là một tập lệnh xây dựng bổ sung cung cấp cách tiếp cận khai báo để thao tác với bản dựng. Điều này thường được sử dụng trong một bản dựng. Plugin nhị phân là các lớp triển khai giao diện plugin và áp dụng cách tiếp cận có lập trình để thao tác xây dựng. Các plugin nhị phân có thể nằm trong một tập lệnh xây dựng, với hệ thống phân cấp của dự án hoặc bên ngoài trong một plugin JAR.
Áp dụng các plugin
Project.apply()Phương thức API được sử dụng để áp dụng plugin cụ thể. Bạn có thể sử dụng cùng một plugin cho nhiều lần. Có hai loại plugin một là plugin script và plugin thứ hai là plugin nhị phân.
Script Plugins
Phần bổ trợ tập lệnh có thể được áp dụng từ một tập lệnh trên hệ thống tệp cục bộ hoặc tại một vị trí từ xa. Vị trí hệ thống tệp liên quan đến thư mục dự án, trong khi vị trí tập lệnh từ xa chỉ định URL HTTP. Hãy xem đoạn mã sau. Nó được sử dụng để áp dụngother.gradleplugin cho tập lệnh xây dựng. Sử dụng mã này trongbuild.gradle tập tin.
apply from: 'other.gradle'
Plugin nhị phân
Mỗi plugin được xác định bằng id plugin trong một số plugin cốt lõi đang sử dụng tên ngắn để áp dụng nó và một số plugin Cộng đồng đang sử dụng tên đủ điều kiện cho id plugin. Đôi khi nó cho phép chỉ định lớp plugin.
Hãy xem đoạn mã sau. Nó chỉ ra cách áp dụng java plugin bằng cách sử dụng loại của nó. Sử dụng mã này trongbuild.gradle tập tin.
apply plugin: JavaPlugin
Hãy xem đoạn mã sau để áp dụng plugin cốt lõi bằng cách sử dụng tên ngắn. Sử dụng mã này trongbuild.gradle tập tin.
plugins {
id 'java'
}
Hãy xem đoạn mã sau để áp dụng plugin cộng đồng bằng tên ngắn. Sử dụng mã này trongbuild.gradle tập tin.
plugins {
id "com.jfrog.bintray" version "0.4.1"
}
Viết các plugin tùy chỉnh
Trong khi tạo một plugin tùy chỉnh, bạn cần viết một triển khai của plugin. Gradle khởi tạo plugin và gọi phiên bản plugin bằng phương thức Plugin.apply (). Mẫu sau chứa một plugin chào, bổ sung thêm một nhiệm vụ chào vào dự án. Hãy xem mã sau đây. Sử dụng mã này trongbuild.gradle tập tin.
apply plugin: GreetingPlugin
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') << {
println "Hello from the GreetingPlugin"
}
}
}
Sử dụng đoạn mã sau để thực thi đoạn mã trên.
C:\> gradle -q hello
Đầu ra:
Hello from the GreetingPlugin
Nhận đầu vào từ bản dựng
Hầu hết các plugin cần hỗ trợ cấu hình từ tập lệnh xây dựng. Dự án Gradle có một đối tượng ExtensionContainer được liên kết giúp theo dõi tất cả cài đặt và thuộc tính được chuyển đến các plugin.
Hãy thêm một đối tượng mở rộng đơn giản vào dự án. Ở đây chúng tôi thêm một đối tượng mở rộng lời chào vào dự án, cho phép bạn định cấu hình lời chào. Sử dụng mã này trongbuild.gradle tập tin.
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'
}
Sử dụng đoạn mã sau để thực thi đoạn mã trên.
C:\> gradle -q hello
Đầu ra:
Hi from Gradle
Trong ví dụ này, GreetingPlugin là một đối tượng Groovy cũ đơn giản với một trường gọi là tin nhắn. Đối tượng mở rộng được thêm vào danh sách plugin với lời chào tên. Đối tượng này sau đó trở thành thuộc tính dự án có cùng tên với đối tượng mở rộng.
Gradle thêm một cấu hình đóng cho từng đối tượng tiện ích mở rộng, vì vậy bạn có thể nhóm các cài đặt lại với nhau. Hãy xem đoạn mã sau. Sử dụng mã này trongbuild.gradle tập tin.
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
}
Sử dụng đoạn mã sau để thực thi đoạn mã trên.
C:\> gradle -q hello
Đầu ra:
Hello from Gradle
Plugin Gradle tiêu chuẩn
Có các plugin khác nhau được bao gồm trong bản phân phối Gradle.
Plugin ngôn ngữ
Các plugin này bổ sung hỗ trợ cho các ngôn ngữ khác nhau có thể được biên dịch và thực thi trong JVM.
Id plugin | Tự động áp dụng | Sự miêu tả |
---|---|---|
java | java-base | Thêm các khả năng biên dịch, kiểm tra và đóng gói Java vào một dự án. Nó đóng vai trò là cơ sở cho nhiều plugin Gradle khác. |
vui vẻ | java, groovy-base | Thêm hỗ trợ để xây dựng các dự án Groovy. |
bỏng nước | java, scala-base | Thêm hỗ trợ để xây dựng các dự án Scala. |
antlr | Java | Thêm hỗ trợ để tạo trình phân tích cú pháp bằng Antlr. |
Ủ các plugin ngôn ngữ
Các plugin này bổ sung hỗ trợ cho các ngôn ngữ khác nhau.
Id plugin | Tự động áp dụng | Sự miêu tả |
---|---|---|
người lắp ráp | - | Thêm khả năng hợp ngữ bản ngữ vào một dự án. |
c | - | Thêm khả năng biên dịch nguồn C vào một dự án. |
cpp | - | Thêm khả năng biên dịch mã nguồn C ++ vào một dự án. |
mục tiêu-c | - | Thêm khả năng biên dịch nguồn Objective-C vào một dự án. |
mục tiêu-cpp | - | Thêm khả năng biên dịch mã nguồn Objective-C ++ vào một dự án. |
windows-resource | - | Thêm hỗ trợ để bao gồm các tài nguyên Windows trong các tệp nhị phân gốc. |