瞭解外掛程式如何擴充 Gradle 的功能,並使用熱門外掛程式。

在本節中,您將

  • 套用外掛程式

  • 設定外掛程式

  • 使用外掛程式

  • 探索其他外掛程式

步驟 0. 開始之前

  1. 您已在 第 1 部分 初始化 Java 應用程式。

  2. 您已在 第 2 部分 執行多項工作。

  3. 您已在 第 3 部分 瞭解依賴項管理。

步驟 1. 了解外掛程式

外掛程式是組織建置邏輯和在專案中重複使用建置邏輯的主要方法。

外掛程式也用於將自訂工作分發為封裝的程式碼。

將外掛程式套用至專案會執行可建立工作、設定屬性,以及以其他方式擴充專案功能的程式碼。一般而言,外掛程式會使用 Gradle API 提供額外功能,並擴充 Gradle 的核心功能。

外掛程式可以

  • 將工作加入專案(例如編譯、測試)。

  • 延伸基本 Gradle 模型(例如新增可設定的新 DSL 元素)。

  • 根據慣例設定專案(例如新增新工作或設定合理預設值)。

  • 套用特定設定(例如新增組織儲存庫或強制執行標準)。

  • 透過延伸模組新增新屬性和方法至現有類型。

步驟 2. 套用外掛程式

我們的專案目前套用單一外掛程式,也就是與 Gradle 捆綁的 應用程式外掛程式

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    application
}
plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
}

讓我們將由 Gradle 維護和分發的外掛程式套用至我們的專案,稱為 Maven 發佈外掛程式。Maven 發佈外掛程式提供將建置成品發佈至 Apache Maven 儲存庫 的功能。它也可以發佈至位於您電腦上的 Maven 本機,也就是儲存庫。

Maven 本機儲存庫的預設位置可能會有所不同,但通常為

  • Mac: /Users/\[username]/.m2

  • Linux: /home/\[username]/.m2

  • Windows: C:\Users\[username]\.m2

預計發佈至 Maven 儲存庫的刊物通常包含

  • 一個或多個成品

  • Gradle 模組元資料

  • Maven POM 檔案

build.gradle(.kts) 中將 maven-publish 新增至外掛程式區塊,套用外掛程式

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    application
    id("maven-publish")
}
plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
    id 'maven-publish'
}

如果您使用 IntelliJ IDEA,請記得同步 Gradle。

讓我們透過查看可用的新工作,確認外掛程式已套用。

在您的命令列中執行 ./gradlew :app:tasks

$ ./gradlew :app:tasks

> Task :app:tasks

------------------------------------------------------------
Tasks runnable from project ':app'
------------------------------------------------------------

...

Publishing tasks
----------------
publish - Publishes all publications produced by this project.
publishToMavenLocal - Publishes all Maven publications produced by this project to the local Maven cache.

現在有一組新的發佈工作可用,稱為 publishpublishToMavenLocal

類似地,Maven 發佈外掛程式的這些新工作現在可以在 IntelliJ 的 Gradle 右側窗格中使用。

intellij idea plugin

步驟 3. 設定外掛程式

將發佈資訊新增至您的 build.gradle(.kts) 檔案

publishing {
    publications {
        create<MavenPublication>("maven") {
            groupId = "com.gradle.tutorial"
            artifactId = "tutorial"
            version = "1.0"

            from(components["java"])
        }
    }
}
publishing {
    publications {
        create("maven", MavenPublication) {
            groupId = "com.gradle.tutorial"
            artifactId = "tutorial"
            version = "1.0"

            from(components["java"])
        }
    }
}

再次在您的命令列中執行 ./gradlew :app:tasks,您會看到額外的工作,因為我們已提供外掛程式有關我們應用程式的其他資訊

$ ./gradlew :app:tasks

> Task :app:tasks

------------------------------------------------------------
Tasks runnable from project ':app'
------------------------------------------------------------

...

Publishing tasks
----------------
generateMetadataFileForMavenPublication - Generates the Gradle metadata file for publication 'maven'.
generatePomFileForMavenPublication - Generates the Maven POM file for publication 'maven'.
publish - Publishes all publications produced by this project.
publishMavenPublicationToMavenLocal - Publishes Maven publication 'maven' to the local Maven repository.
publishToMavenLocal - Publishes all Maven publications produced by this project to the local Maven cache.
intellij idea pub

步驟 4. 使用外掛程式

若要使用外掛程式,請執行 ./gradlew :app:publishToMavenLocal 來執行 publishToMavenLocal 工作。

$ ./gradlew :app:publishToMavenLocal

> Task :app:compileJava FROM-CACHE
> Task :app:processResources NO-SOURCE
> Task :app:classes UP-TO-DATE
> Task :app:jar
> Task :app:generateMetadataFileForMavenPublication
> Task :app:generatePomFileForMavenPublication
> Task :app:publishMavenPublicationToMavenLocal
> Task :app:publishToMavenLocal
BUILD SUCCESSFUL in 331ms

publishToMavenLocal 工作會建置 POM 檔案和要發佈的成品。然後將它們安裝至本機 Maven 儲存庫。

您可以在 build 目錄中檢視 POM 和 GMM 檔案

intellij idea dist

您也可以在您的 Maven 本機目錄中檢視檔案:/Users/\[username]/m2/repository/com/gradle/tutorial/tutorial/1.0

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gradle.tutorial</groupId>
  <artifactId>tutorial</artifactId>
  <version>1.0</version>
  <packaging>pom</packaging>
</project>

步驟 5. 探索外掛程式

外掛用於擴充建置功能並自訂 Gradle。

使用外掛是組織建置邏輯的主要機制

外掛作者可以將其外掛保持為私人或公開發行。因此,外掛有以下三種發行方式

  1. 核心外掛 - Gradle 開發並維護一組核心外掛

  2. 社群外掛 - Gradle 的社群透過Gradle 外掛入口網站分享外掛。

  3. 自訂外掛 - Gradle 使用者可以使用API建立自訂外掛。

慣例外掛是用於在子專案 (模組) 之間分享建置邏輯的外掛。使用者可以在慣例外掛中包裝共用邏輯。例如,用作慣例外掛的程式碼涵蓋率外掛可以調查整個專案的程式碼涵蓋率,而不只特定子專案。

Gradle 強烈建議使用慣例外掛。

下一步: 探索增量建置 >>