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 Publish (maven-publish
) 和 Ivy Publish (ivy-publish
) 插件。
其他插件会自动应用 Java Gradle 插件,例如 插件发布插件。
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() 块中(因此在 构建配置阶段 结束时),并且仅当这些发布尚未定义时才发生,因此可以在构建配置的早期阶段创建和自定义它们。