Giới thiệu

Đối tượng mục tiêu: Lập trình viên từ mới bắt đầu đến trung cấp có sử dụng Gradle.

Bắt đầu một dự án plugin Gradle mới có thể có vẻ đáng sợ. May mắn thay, Gradle cung cấp một trợ lý tương tác mạnh mẽ, tác vụ`init`, công cụ tạo ra một cấu trúc dự án hoàn chỉnh, gọn gàng và sẵn sàng sử dụng. Hướng dẫn này sẽ chỉ cho bạn cách sử dụng công cụ này để tạo một nền tảng plugin ổn định, giải thích cấu trúc của nó và chỉ cho bạn cách khởi chạy các tác vụ build đầu tiên.

Bước 1: Khởi chạy trình hướng dẫn dự án

Lệnh`gradle init`là điểm khởi đầu. Nó khởi chạy một trợ lý dòng lệnh hỏi bạn một loạt câu hỏi để cấu hình dự án.

Mở terminal của bạn trong một thư mục trống và chạy:

gradle init

Trợ lý sẽ hướng dẫn bạn. Dưới đây là các lựa chọn cần thực hiện cho một plugin Gradle được viết bằng Kotlin:

  1. Chọn loại dự án để tạo:Chọn`Gradle plugin`.

  2. Chọn ngôn ngữ triển khai:Chọn`Kotlin`.

  3. Chọn DSL của script build:Chọn`Kotlin`.

  4. Tên dự án:Nhập tên cho dự án của bạn (ví dụ:`site-baker`).

  5. ID plugin:Hãy đặt một mã định danh duy nhất cho plugin của bạn (ví dụ:`com.cheroliv.site-baker`).

  6. Lớp plugin:Chỉ định tên của lớp triển khai (ví dụ:`com.cheroliv.SiteBakerPlugin`).

Sau khi hoàn tất, Gradle sẽ tạo ra một cây tệp hoàn chỉnh.

Sơ đồ quá trình khởi tạo
@startuml
start
:Khởi chạy `gradle init`;
:Chọn "Gradle plugin;
:Chọn "Kotlin" (ngôn ngữ);
:Chọn "Kotlin" (DSL);
:Nhập tên, ID và lớp;
:Dự án được tạo;
stop
@enduml

Bước 2: Hiểu cấu trúc được tạo ra

Trình hướng dẫn tạo cấu trúc dự án đa mô-đun, tách dự án gốc khỏi mã nguồn của chính plugin.

.
├── 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

Các tệp và thư mục chính

  • settings.gradle.kts: Tệp này ở thư mục gốc xác định các mô-đun được đưa vào bản dựng. Ở đây, nó bao gồm dự án con`plugin`.

[source,kotlin] ---- rootProject.name = "site-baker include("plugin") ----

  • plugin/build.gradle.kts: Đây là phần cốt lõi của cấu hình plugin của bạn. Nó áp dụng plugin`java-gradle-plugin`, khai báo các phụ thuộc và cấu hình siêu dữ liệu của plugin.

[source,kotlin] ---- plugins { 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/: Chứa mã nguồn của plugin của bạn.

  • src/test/: Chứa các bài kiểm thử đơn vị. Chúng chạy nhanh chóng và độc lập.

  • src/functionalTest/: Chứa các bài kiểm thử chức năng. Các bài kiểm thử này sử dụng`GradleRunner`để chạy một phiên bản đầy đủ của Gradle trên một dự án thử nghiệm, qua đó mô phỏng cách sử dụng thực tế plugin của bạn.

Bước 3: Xây dựng và kiểm thử plugin

Dự án được tạo bao gồmGradle Wrapper(gradlew). Đây là cách được khuyến nghị để chạy Gradle, vì nó đảm bảo rằng tất cả các nhà phát triển sử dụng cùng một phiên bản, đảm bảo các bản build có thể tái lập.

Nhiệm vụ cơ bản

  • Xây dựng dự án:

Lệnh này biên dịch mã của bạn, chạy tất cả các bài kiểm thử (đơn vị và chức năng) và đóng gói JAR của plugin bạn. [source,bash] ---- ./gradlew build ----

  • Chạy tất cả các kiểm tra:

Nhiệm vụ`check`là một bí danh thực thi tất cả các tác vụ xác minh, bao gồm`test` et functionalTest. [source,bash] ---- ./gradlew check ----

  • Chỉ chạy các kiểm thử đơn vị:

Để có phản hồi nhanh trong quá trình phát triển. [source,bash] ---- ./gradlew test ----

Lệnh`./gradlew :test`, vốn nhắm mục tiêu rõ ràng vào dự án gốc, sẽ thất bại vì dự án này không chứa bài kiểm thử. Ngược lại: * ./gradlew test`hoạt động vì Gradle thực thi tác vụ`test`trên tất cả các tiểu dự án có nó (ở đây, mô-đun`plugin). * `./gradlew :plugin:test`là lệnh rõ ràng nhất để chạy kiểm thử của mô-đun`plugin`chỉ.

  • Chỉ chạy các bài kiểm thử chức năng:

Chậm hơn, chúng hữu ích để xác thực hành vi tổng thể. [source,bash] ---- ./gradlew functionalTest ----

Kết quả kiểm thử được tạo trong thư mục`plugin/build/reports/tests/`. Bạn có thể mở tệp`index.html`trong trình duyệt của bạn để xem báo cáo chi tiết.

Kết luận

Trong vài phút,`gradle init`đã cung cấp cho bạn một nền tảng dự án vững chắc, hiện đại và hoàn chỉnh để phát triển plugin của bạn. Bạn có một cấu trúc rõ ràng, các bài kiểm thử đơn vị và chức năng được cấu hình sẵn, cùng một hệ thống build có thể tái lập nhờ Gradle Wrapper.

Bây giờ bạn đã sẵn sàng mở tệp`SiteBakerPlugin.kt`và bắt đầu thêm logic nghiệp vụ của plugin của bạn vào đó!

Bài viết liên quan