Gradle - ปลั๊กอิน
ปลั๊กอินไม่ใช่อะไรนอกจากชุดของงานงานที่มีประโยชน์เกือบทั้งหมดเช่นการคอมไพล์งานการตั้งค่าออบเจ็กต์โดเมนการตั้งค่าไฟล์ต้นฉบับ ฯลฯ จะถูกจัดการโดยปลั๊กอิน การใช้ปลั๊กอินกับโปรเจ็กต์หมายความว่าทำให้ปลั๊กอินสามารถขยายขีดความสามารถของโปรเจ็กต์ได้ ปลั๊กอินสามารถทำสิ่งต่างๆเช่น -
- ขยายโมเดล Gradle พื้นฐาน (เช่นเพิ่มองค์ประกอบ DSL ใหม่ที่สามารถกำหนดค่าได้)
- กำหนดค่าโครงการตามการแปลง (เช่นเพิ่มงานใหม่หรือกำหนดค่าเริ่มต้นที่เหมาะสม)
- ใช้การกำหนดค่าเฉพาะ (เช่นเพิ่มที่เก็บขององค์กรหรือบังคับใช้มาตรฐาน)
ประเภทของปลั๊กอิน
มีปลั๊กอินสองประเภทใน Gradle ปลั๊กอินสคริปต์และปลั๊กอินไบนารี ปลั๊กอินสคริปต์เป็นสคริปต์บิลด์เพิ่มเติมที่ให้วิธีการประกาศในการจัดการบิลด์ โดยทั่วไปจะใช้ภายในบิลด์ ปลั๊กอินไบนารีเป็นคลาสที่ใช้อินเทอร์เฟซปลั๊กอินและใช้วิธีการแบบเป็นโปรแกรมเพื่อจัดการกับบิลด์ ปลั๊กอินไบนารีสามารถอยู่ในสคริปต์บิลด์โดยมีลำดับชั้นของโปรเจ็กต์หรือภายนอกใน JAR ปลั๊กอิน
การใช้ปลั๊กอิน
Project.apply()เมธอด API ใช้เพื่อใช้ปลั๊กอินเฉพาะ คุณสามารถใช้ปลั๊กอินเดียวกันได้หลายครั้ง ปลั๊กอินมีสองประเภทหนึ่งคือปลั๊กอินสคริปต์และที่สองคือปลั๊กอินไบนารี
ปลั๊กอินสคริปต์
ปลั๊กอินสคริปต์สามารถใช้งานได้จากสคริปต์บนระบบไฟล์ภายในเครื่องหรือที่ตำแหน่งระยะไกล ตำแหน่งระบบไฟล์สัมพันธ์กับไดเร็กทอรีโปรเจ็กต์ในขณะที่ตำแหน่งสคริปต์ระยะไกลระบุ HTTP URL ดูข้อมูลโค้ดต่อไปนี้ ใช้เพื่อใช้other.gradleปลั๊กอินสำหรับสร้างสคริปต์ ใช้รหัสนี้ในbuild.gradle ไฟล์.
apply from: 'other.gradle'
ปลั๊กอินไบนารี
ปลั๊กอินแต่ละตัวถูกระบุโดยรหัสปลั๊กอินในปลั๊กอินหลักบางตัวใช้ชื่อสั้น ๆ เพื่อนำไปใช้และปลั๊กอินชุมชนบางตัวใช้ชื่อแบบเต็มสำหรับรหัสปลั๊กอิน บางครั้งอนุญาตให้ระบุคลาสของปลั๊กอิน
ดูข้อมูลโค้ดต่อไปนี้ แสดงวิธีการใช้ปลั๊กอิน java โดยใช้ประเภทของมัน ใช้รหัสนี้ในbuild.gradle ไฟล์.
apply plugin: JavaPlugin
ดูรหัสต่อไปนี้สำหรับการใช้ปลั๊กอินหลักโดยใช้ชื่อย่อ ใช้รหัสนี้ในbuild.gradle ไฟล์.
plugins {
id 'java'
}
ดูรหัสต่อไปนี้สำหรับการใช้ปลั๊กอินชุมชนโดยใช้ชื่อย่อ ใช้รหัสนี้ในbuild.gradle ไฟล์.
plugins {
id "com.jfrog.bintray" version "0.4.1"
}
การเขียน Custom Plugins
ในขณะที่สร้างปลั๊กอินที่กำหนดเองคุณต้องเขียนการใช้งานปลั๊กอิน Gradle สร้างอินสแตนซ์ปลั๊กอินและเรียกอินสแตนซ์ปลั๊กอินโดยใช้เมธอด Plugin.apply () ตัวอย่างต่อไปนี้มีปลั๊กอินคำทักทายซึ่งเพิ่มงานสวัสดีให้กับโครงการ ดูรหัสต่อไปนี้ ใช้รหัสนี้ใน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 เป็นวัตถุ Groovy เก่าธรรมดาที่มีฟิลด์ที่เรียกว่าข้อความ อ็อบเจ็กต์ส่วนขยายจะถูกเพิ่มลงในรายการปลั๊กอินพร้อมคำทักทายชื่อ จากนั้นวัตถุนี้จะพร้อมใช้งานเป็นคุณสมบัติโครงการที่มีชื่อเดียวกับวัตถุส่วนขยาย
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
รหัสปลั๊กอิน | ใช้โดยอัตโนมัติ | คำอธิบาย |
---|---|---|
java | java ฐาน | เพิ่มความสามารถในการคอมไพล์การทดสอบและบันเดิล Java ให้กับโปรเจ็กต์ ทำหน้าที่เป็นพื้นฐานสำหรับปลั๊กอิน Gradle อื่น ๆ |
ร่อง | java, groovy-base | เพิ่มการสนับสนุนสำหรับการสร้างโครงการ Groovy |
สกาล่า | java, ฐาน scala | เพิ่มการสนับสนุนสำหรับการสร้างโครงการ Scala |
antlr | Java | เพิ่มการรองรับการสร้างตัวแยกวิเคราะห์โดยใช้ Antlr |
การบ่มเพาะปลั๊กอินภาษา
ปลั๊กอินเหล่านี้เพิ่มการรองรับภาษาต่างๆ
รหัสปลั๊กอิน | ใช้โดยอัตโนมัติ | คำอธิบาย |
---|---|---|
ผู้ประกอบ | - | เพิ่มความสามารถของภาษาแอสเซมบลีเนทีฟให้กับโปรเจ็กต์ |
ค | - | เพิ่มความสามารถในการคอมไพล์ซอร์ส C ให้กับโปรเจ็กต์ |
cpp | - | เพิ่มความสามารถในการคอมไพล์ซอร์ส C ++ ให้กับโปรเจ็กต์ |
วัตถุประสงค์ -c | - | เพิ่มความสามารถในการคอมไพล์ซอร์ส Objective-C ให้กับโปรเจ็กต์ |
วัตถุประสงค์ -Cpp | - | เพิ่มความสามารถในการคอมไพล์ซอร์ส Objective-C ++ ให้กับโปรเจ็กต์ |
Windows ทรัพยากร | - | เพิ่มการสนับสนุนสำหรับการรวมทรัพยากรของ Windows ในไบนารีดั้งเดิม |