บทความที่ 1 : สร้างปลั๊กอิน Gradle ตั้งแต่ A ถึง Z ด้วยคำสั่ง gradle init
เผยแพร่เมื่อ 23 September 2025
บทนำ
การเริ่มต้นโปรเจกต์ปลั๊กอิน Gradle ใหม่อาจดูน่ากลัว โชคดีที่ Gradle มีผู้ช่วยแบบโต้ตอบที่ทรงพลัง คือทาสก์`init`, ซึ่งสร้างโครงสร้างโปรเจกต์ที่สมบูรณ์ สะอาด และพร้อมใช้งาน คู่มือนี้จะแสดงวิธีใช้เครื่องมือนี้เพื่อสร้างฐานปลั๊กอินที่แข็งแรง อธิบายโครงสร้างของมัน และแสดงวิธีเริ่มงานบิลด์แรก ๆ
ขั้นตอนที่ 1: เปิดตัวช่วยโครงการ
คำสั่ง`gradle init`เป็นจุดเริ่มต้น โดยจะเรียกใช้ผู้ช่วยในบรรทัดคำสั่งที่จะถามคำถามคุณหลายข้อเพื่อตั้งค่าโปรเจกต์
เปิดเทอร์มินัลของคุณในโฟลเดอร์ว่าง แล้วรัน:
gradle init
ตัวช่วยจะแนะนำคุณ นี่คือตัวเลือกที่ต้องเลือกสำหรับปลั๊กอิน Gradle ที่เขียนด้วย Kotlin:
-
เลือกประเภทของโปรเจกต์ที่จะสร้าง:เลือก`Gradle plugin`.
-
เลือกภาษาที่ใช้ในการนำไปใช้งาน:เลือก`Kotlin`.
-
เลือก DSL ของสคริปต์การสร้าง:เลือก`Kotlin`.
-
ชื่อโครงการ:กรอกชื่อสำหรับโปรเจกต์ของคุณ (เช่น`site-baker`).
-
รหัสปลั๊กอิน:กำหนดตัวระบุที่ไม่ซ้ำกันให้กับปลั๊กอินของคุณ (เช่น:`com.cheroliv.site-baker`).
-
คลาสปลั๊กอิน:ระบุชื่อคลาสอิมพลีเมนเทชัน (เช่น:`com.cheroliv.SiteBakerPlugin`).
เมื่อเสร็จสิ้น Gradle จะสร้างโครงสร้างไฟล์ที่สมบูรณ์
@startuml start :เรียกใช้ `gradle init`; :Choisir "ปลั๊กอิน Gradle"; :เลือก "Kotlin" (ภาษา); :เลือก "Kotlin" (DSL); :กรอกชื่อ ID และชั้นเรียน; :โปรเจกต์ที่สร้างขึ้น; stop @enduml
ขั้นตอนที่ 2: ทำความเข้าใจโครงสร้างที่สร้างขึ้น
ผู้ช่วยสร้างโครงสร้างโปรเจกต์แบบหลายโมดูล โดยแยกโปรเจกต์รากออกจากซอร์สโค้ดของปลั๊กอินเอง
.
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── plugin/
│ ├── build.gradle.kts
│ └── src/
│ ├── main/
│ │ └── kotlin/
│ │ └── com/cheroliv/SiteBakerPlugin.kt
│ ├── test/
│ │ └── kotlin/
│ │ └── com/cheroliv/SiteBakerPluginTest.kt
│ └── functionalTest/
│ └── kotlin/
│ └── com/cheroliv/SiteBakerPluginFunctionalTest.kt
└── settings.gradle.kts
ไฟล์และโฟลเดอร์สำคัญ
-
settings.gradle.kts: ไฟล์ที่อยู่ในรูทนี้กำหนดโมดูลที่รวมอยู่ในบิลด์ ในที่นี้它包括โปรเจกต์ย่อย`plugin`.
[source,kotlin] ---- rootProject.name = "site-baker include("plugin") ----
-
plugin/build.gradle.kts: นี่คือหัวใจของการกำหนดค่าปลั๊กอินของคุณ มันจะนำปลั๊กอินไปใช้`java-gradle-plugin`, ประกาศการอ้างอิงและกำหนดค่าเมทาดาทาของปลั๊กอิน
[source,kotlin] ---- ปลั๊กอิน { java-gradle-plugin alias(libs.plugins.kotlin.jvm) }
gradlePlugin { val siteBaker by plugins.creating { id = "com.cheroliv.site-baker implementationClass = "com.cheroliv.SiteBakerPlugin } } ----
-
src/main/: มีซอร์สโค้ดของปลั๊กอินของคุณ -
src/test/: ประกอบด้วยการทดสอบระดับหน่วย ซึ่งทำงานอย่างรวดเร็วและแยกส่วนกัน -
src/functionalTest/: มีการทดสอบเชิงฟังก์ชัน การทดสอบเหล่านี้ใช้`GradleRunner`เพื่อรัน Gradle เวอร์ชันเต็มบนโปรเจกต์ทดสอบ ซึ่งจำลองการใช้งานจริงของปลั๊กอินของคุณ
ขั้นตอนที่ 3: สร้างและทดสอบปลั๊กอิน
โปรเจกต์ที่สร้างขึ้นประกอบด้วยGradle Wrapper(gradlew). นี่คือวิธีที่แนะนำในการรัน Gradle เนื่องจากช่วยรับประกันว่านักพัฒนาทุกคนใช้เวอร์ชันเดียวกัน ซึ่งทำให้ได้บิลด์ที่สามารถทำซ้ำได้
งานพื้นฐาน
-
สร้างโปรเจกต์:
คำสั่งนี้จะคอมไพล์โค้ดของคุณ รันการทดสอบทั้งหมด (ทั้งแบบยูนิตและแบบฟังก์ชันนัล) และประกอบ JAR ของปลั๊กอินของคุณ [source,bash] ---- ./gradlew build ----
-
เรียกใช้การตรวจสอบทั้งหมด:
งาน`check`เป็นนามแฝงที่รันงานตรวจสอบทั้งหมด รวมถึง`test` et functionalTest. [source,bash] ---- ./gradlew check ----
-
เรียกใช้เฉพาะการทดสอบหน่วย:
สำหรับฟีดแบ็กที่รวดเร็วระหว่างการพัฒนา [source,bash] ---- ./gradlew test ----
|
คำสั่ง`./gradlew :test`, ซึ่งระบุเป้าหมายไปที่โปรเจกต์รากอย่างชัดเจน จะล้มเหลวเนื่องจากโปรเจกต์ดังกล่าวไม่มีการทดสอบ ส่วนในทางกลับกัน:
* |
-
รันเฉพาะการทดสอบเชิงฟังก์ชัน:
ตัวที่ช้ากว่าเหล่านี้มีประโยชน์ในการตรวจสอบพฤติกรรมโดยรวม [source,bash] ---- ./gradlew functionalTest ----
ผลการทดสอบถูกสร้างขึ้นในโฟลเดอร์`plugin/build/reports/tests/`. คุณสามารถเปิดไฟล์`index.html`ในเบราว์เซอร์ของคุณสำหรับรายงานโดยละเอียด
บทสรุป
ในไม่กี่นาที,`gradle init`ได้ให้พื้นฐานโครงการที่มั่นคง ทันสมัย และครบถ้วนสำหรับการพัฒนาปลั๊กอินของคุณแก่คุณ คุณมีโครงสร้างที่ชัดเจน การทดสอบหน่วยและการทดสอบเชิงฟังก์ชันที่กำหนดค่าไว้ล่วงหน้า และระบบบิลด์ที่ทำซ้ำได้ด้วย Gradle Wrapper
ตอนนี้คุณพร้อมที่จะเปิดไฟล์แล้ว`SiteBakerPlugin.kt`และเริ่มเพิ่มตรรกะทางธุรกิจของปลั๊กอินของคุณลงไปในนั้น!