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 ในไบนารีดั้งเดิม