Java Gradle 插件开发插件可用于协助开发 Gradle 插件。它会自动应用 Java Library (java-library
) 插件,将 gradleApi()
依赖项添加到 api
配置中,并在执行 jar
Task 期间执行插件元数据验证。
该插件还集成了 TestKit,这是一个有助于编写和执行插件代码功能测试的库。它会自动将 gradleTestKit()
依赖项添加到 testImplementation
配置中,如果找到 GradleRunner
实例,则会生成供其使用的插件 classpath 清单文件。有关其用法、配置选项和示例的更多信息,请参阅使用插件开发插件进行自动 classpath 注入。
用法
要使用 Java Gradle 插件开发插件,请在您的构建脚本中包含以下内容
plugins {
`java-gradle-plugin`
}
plugins {
id 'java-gradle-plugin'
}
应用此插件会自动应用 Java Library(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
目录中生成插件描述符。 -
为每个插件配置 插件标记 Artifact 发布(Maven 或 Ivy)。
-
将每个插件发布到 Gradle 插件门户(详情请参阅将插件发布到 Gradle 插件门户),但这仅在同时应用了 Plugin Publishing Plugin 的情况下进行。
交互
插件的某些行为取决于您的构建中是否也应用了其他相关插件,即 Maven Publish (maven-publish
) 和 Ivy Publish (ivy-publish
) 插件。
其他插件会自动应用 Java Gradle 插件,例如 Plugin Publishing Plugin。
Maven Publish 插件
当 Java Gradle 插件 (java-gradle-plugin
) 检测到构建中也应用了 Maven Publish 插件 (maven-publish
) 时,它将自动配置以下 MavenPublications
这种自动配置发生在 Project.afterEvaluate() 块中(即在构建配置阶段的末尾),并且仅在这些发布尚未定义的情况下进行,因此可以在构建配置的早期阶段创建和定制它们。
Ivy Publish 插件
当 Java Gradle 插件 (java-gradle-plugin
) 检测到构建中也应用了 Ivy Publish 插件 (ivy-publish
) 时,它将自动配置以下 IvyPublications
这种自动配置发生在 Project.afterEvaluate() 块中(即在构建配置阶段的末尾),并且仅在这些发布尚未定义的情况下进行,因此可以在构建配置的早期阶段创建和定制它们。
Plugin Publish 插件
从版本 1.0.0 开始,Plugin Publish 插件始终自动应用 Java Gradle 插件 (java-gradle-plugin
) 和 Maven Publish 插件 (maven-publish
)。