บทนำ

กลุ่มเป้าหมาย: นักพัฒนาระดับเริ่มต้นถึงปานกลางที่ใช้ Gradle.

การเริ่มต้นโปรเจกต์ปลั๊กอิน Gradle ใหม่อาจดูน่ากลัว โชคดีที่ Gradle มีผู้ช่วยแบบโต้ตอบที่ทรงพลัง คือทาสก์`init`, ซึ่งสร้างโครงสร้างโปรเจกต์ที่สมบูรณ์ สะอาด และพร้อมใช้งาน คู่มือนี้จะแสดงวิธีใช้เครื่องมือนี้เพื่อสร้างฐานปลั๊กอินที่แข็งแรง อธิบายโครงสร้างของมัน และแสดงวิธีเริ่มงานบิลด์แรก ๆ

ขั้นตอนที่ 1: เปิดตัวช่วยโครงการ

คำสั่ง`gradle init`เป็นจุดเริ่มต้น โดยจะเรียกใช้ผู้ช่วยในบรรทัดคำสั่งที่จะถามคำถามคุณหลายข้อเพื่อตั้งค่าโปรเจกต์

เปิดเทอร์มินัลของคุณในโฟลเดอร์ว่าง แล้วรัน:

gradle init

ตัวช่วยจะแนะนำคุณ นี่คือตัวเลือกที่ต้องเลือกสำหรับปลั๊กอิน Gradle ที่เขียนด้วย Kotlin:

  1. เลือกประเภทของโปรเจกต์ที่จะสร้าง:เลือก`Gradle plugin`.

  2. เลือกภาษาที่ใช้ในการนำไปใช้งาน:เลือก`Kotlin`.

  3. เลือก DSL ของสคริปต์การสร้าง:เลือก`Kotlin`.

  4. ชื่อโครงการ:กรอกชื่อสำหรับโปรเจกต์ของคุณ (เช่น`site-baker`).

  5. รหัสปลั๊กอิน:กำหนดตัวระบุที่ไม่ซ้ำกันให้กับปลั๊กอินของคุณ (เช่น:`com.cheroliv.site-baker`).

  6. คลาสปลั๊กอิน:ระบุชื่อคลาสอิมพลีเมนเทชัน (เช่น:`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`, ซึ่งระบุเป้าหมายไปที่โปรเจกต์รากอย่างชัดเจน จะล้มเหลวเนื่องจากโปรเจกต์ดังกล่าวไม่มีการทดสอบ ส่วนในทางกลับกัน: * ./gradlew test`ทำงานได้เพราะ Gradle รันทาสก์`test`กับโปรเจกต์ย่อยทั้งหมดที่มีมัน (ในที่นี้ คือโมดูล`plugin). * `./gradlew :plugin:test`คือคำสั่งที่ชัดเจนที่สุดในการรันการทดสอบของโมดูล`plugin`เท่านั้น

  • รันเฉพาะการทดสอบเชิงฟังก์ชัน:

ตัวที่ช้ากว่าเหล่านี้มีประโยชน์ในการตรวจสอบพฤติกรรมโดยรวม [source,bash] ---- ./gradlew functionalTest ----

ผลการทดสอบถูกสร้างขึ้นในโฟลเดอร์`plugin/build/reports/tests/`. คุณสามารถเปิดไฟล์`index.html`ในเบราว์เซอร์ของคุณสำหรับรายงานโดยละเอียด

บทสรุป

ในไม่กี่นาที,`gradle init`ได้ให้พื้นฐานโครงการที่มั่นคง ทันสมัย และครบถ้วนสำหรับการพัฒนาปลั๊กอินของคุณแก่คุณ คุณมีโครงสร้างที่ชัดเจน การทดสอบหน่วยและการทดสอบเชิงฟังก์ชันที่กำหนดค่าไว้ล่วงหน้า และระบบบิลด์ที่ทำซ้ำได้ด้วย Gradle Wrapper

ตอนนี้คุณพร้อมที่จะเปิดไฟล์แล้ว`SiteBakerPlugin.kt`และเริ่มเพิ่มตรรกะทางธุรกิจของปลั๊กอินของคุณลงไปในนั้น!

บทความที่เกี่ยวข้อง