了解插件如何扩展 Gradle 的功能并使用一个流行的插件。
步骤 1. 理解插件
插件是组织构建逻辑并在项目内重用构建逻辑的主要方法。
插件也用于将自定义任务作为打包代码分发。
将插件应用到项目会执行代码,这些代码可以创建任务、配置属性,并以其他方式扩展项目的功能。通常,插件使用 Gradle API 提供附加功能并扩展 Gradle 的核心特性。
插件可以
-
向项目添加任务(例如编译、测试)。
-
扩展基本的 Gradle 模型(例如添加可配置的新 DSL 元素)。
-
根据约定配置项目(例如添加新任务或配置合理的默认值)。
-
应用特定配置(例如添加组织仓库或强制执行标准)。
-
通过扩展向现有类型添加新属性和方法。
步骤 2. 应用插件
我们的项目目前应用了一个插件,即与 Gradle 捆绑的应用插件。
plugins { (1)
// Apply the application plugin to add support for building a CLI application in Java.
application
}
plugins { (1)
// 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)
的 plugins 块中添加 maven-publish
来应用插件
plugins { (1)
// Apply the application plugin to add support for building a CLI application in Java.
application
// Apply the maven publish plugin
id("maven-publish")
}
plugins { (1)
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
// Apply the maven publish plugin
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.
现在有一组新的发布任务可用,名为 publish
和 publishToMavenLocal
。
同样,Maven 发布插件的新任务现在在 IntelliJ 的 Gradle 右侧窗格中可用。

步骤 3. 配置插件
将发布信息添加到您的 build.gradle(.kts)
文件中
publishing {
publications {
create<MavenPublication>("maven") {
groupId = "com.gradle.tutorial"
artifactId = "tutorial"
version = "1.0"
from(components["java"])
}
}
}
publishing {
publications {
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.

步骤 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 文件

您还可以在 Maven 本地目录中查看文件:~/.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 的功能。它们是组织和重用构建逻辑的主要方式。
Gradle 支持三种主要插件类型
-
核心插件 – 内置于 Gradle 中(例如
java
,application
)plugins { id("java") }
-
社区插件 – 由其他人发布到Gradle 插件门户
plugins { id("com.diffplug.spotless") version "6.25.0" }
-
自定义插件 – 由您或您的团队为内部使用而创建。它们位于
buildSrc/
或专用子项目中。约定插件 是自定义插件,用于在子项目之间共享常见的构建逻辑(如代码风格、编译器选项或测试设置)
plugins { id("myproject.java-conventions") }
Gradle 建议使用约定插件以避免重复并在大型构建中管理共享设置。 |
您可以从约定插件示例中了解更多信息。
下一步: 探索增量构建 >>