Java Gradle 插件开发插件可用于协助开发 Gradle 插件。它会自动应用 Java 库 (java-library
) 插件,将 gradleApi()
依赖项添加到 api
配置中,并在 jar
任务执行期间执行插件元数据的验证。
该插件还与 TestKit 集成,TestKit 是一个库,用于帮助编写和执行插件代码的功能测试。它会自动将 gradleTestKit()
依赖项添加到 testImplementation
配置中,并在找到时生成由 GradleRunner
实例使用的插件类路径清单文件。有关其用法、配置选项和示例的更多信息,请参阅 使用插件开发插件的自动类路径注入。
用法
要使用 Java Gradle 插件开发插件,请在您的构建脚本中包含以下内容
plugins {
`java-gradle-plugin`
}
plugins {
id 'java-gradle-plugin'
}
应用该插件会自动应用 Java 库 (java-library
) 插件,并将 gradleApi()
依赖项添加到 api
配置中。它还会对构建进行一些验证。
执行以下验证
-
为插件定义了插件描述符。
-
插件描述符包含
implementation-class
属性。 -
implementation-class
属性引用了 jar 中的有效类文件。 -
每个属性 getter 或相应的字段必须使用属性注解进行注释,例如
@InputFile
和@OutputDirectory
。不参与最新检查的属性应使用@Internal
进行注释。
任何失败的验证都会导致警告消息。
对于您开发的每个插件,请在 gradlePlugin {}
脚本块中添加一个条目
gradlePlugin {
plugins {
create("simplePlugin") {
id = "org.gradle.sample.simple-plugin"
implementationClass = "org.gradle.sample.SimplePlugin"
}
}
}
gradlePlugin {
plugins {
simplePlugin {
id = 'org.gradle.sample.simple-plugin'
implementationClass = 'org.gradle.sample.SimplePlugin'
}
}
}
gradlePlugin {}
块定义了项目构建的插件,包括插件的 id
和 implementationClass
。从有关正在开发的插件的这些数据中,Gradle 可以自动
-
在
jar
文件的META-INF
目录中生成插件描述符。 -
为每个插件配置 插件标记工件 发布(Maven 或 Ivy)。
-
将每个插件发布到 Gradle 插件门户(有关详细信息,请参阅 将插件发布到 Gradle 插件门户),但前提是 插件发布插件 也已应用。
交互
插件的一些行为取决于构建中是否也应用了其他相关的插件,即 Maven 发布 (maven-publish
) 和 Ivy 发布 (ivy-publish
) 插件。
其他插件会自动应用 Java Gradle 插件,例如 插件发布插件。
Maven 发布插件
当 Java Gradle 插件 (java-gradle-plugin
) 检测到 Maven 发布插件 (maven-publish
) 也由构建应用时,它会自动配置以下 MavenPublications
此自动配置发生在 Project.afterEvaluate() 块中(因此在 构建配置阶段 的末尾),并且仅当这些出版物尚未定义时,因此可以在构建配置的早期阶段创建和自定义它们。
Ivy 发布插件
当 Java Gradle 插件 (java-gradle-plugin
) 检测到 Ivy 发布插件 (ivy-publish
) 也被构建应用时,它将自动配置以下 IvyPublications
此自动配置发生在 Project.afterEvaluate() 块中(因此在 构建配置阶段 的末尾),并且仅当这些出版物尚未定义时,因此可以在构建配置的早期阶段创建和自定义它们。
插件发布插件
从 版本 1.0.0 开始,插件发布插件 始终自动应用 Java Gradle 插件 (java-gradle-plugin
) 和 Maven 发布插件 (maven-publish
)。