简化 Plugin-Publish 插件

使用 Plugin-Publish 插件 配置将 Gradle 插件发布到 Portal。最近发布的 1.0.0 版本 插件通过更强的意见和更直接的配置,显著改善了该过程。

更强的约定

Gradle 插件开发有着悠久的历史,并且逐渐演变为使用辅助插件来帮助您设置插件项目。 最重要的插件是

Plugin-Publish 插件也拥有悠久的历史,它最终支持了所有辅助插件的各种组合。 这导致了太多发布插件的方式,以及太多配置选项,其中一些选项的语义难以理解,具体取决于确切的设置。

例如,发布元数据可以通过 maven-publish 插件或其他临时方式生成。 具体取决于此,插件和标记 GAV 坐标都会有所不同,并产生令人惊讶的效果。

Plugin-Publish 插件的 1.0.0 版 通过收紧和强制执行约定来解决这些问题。 主要辅助插件始终自动应用

  • maven-publish 始终用于生成发布元数据(Maven POM 和 Gradle 模块元数据)。
  • java-gradle-plugin 始终应用并用作插件定义的基础; 因此,gradlePlugin 块现在是强制性的,并且 pluginBundle 块已被修剪以删除所有重复项。

明确的配置

在配置插件的发布时,最终结果的每个属性都应该有一种指定方式。

为了确保这一点,Plugin-Publish 插件的 1.0.0 版 正在删除 pluginBundle.plugins 块,因为它与 gradlePlugin.plugins 重复。

不幸的是,重复并不(尚未)完美,因此需要添加 pluginBundle.pluginTags 映射才能为一起发布的插件定义不同的标签。 更优雅的解决方案是在 gradlePlugin.plugins 块的元素中指定标签,但这只有在 Gradle 7.6 及更高版本中才有可能。

请查看此处的示例,待 Gradle 7.6 发布后,将进一步改进。

明确定义的交互

版本 1.0.0 指定了(并自动化)Plugin-Publish 插件与其他常用插件的交互方式。

  • 如果应用了签名插件,则插件的所有发布工件将自动签名。
  • 如果应用了Shadow 插件,则插件的主 jar 将是 Shadow 插件配置的 Shadow jar。

如果应用了这些插件,用户将在控制台上收到有关它们触发的自动配置的通知。

重大变更

为了加强约定和简化配置,版本 1.0.0 也带来了一些重大变更。

Plugin-Publish 插件支持的最低 Gradle 版本变为 4.10.3。之前是 3.5.1

maven-publish 插件设为必选,也导致 mavenCoordinateswithDependencies 块被完全移除。它们提供的功能不再需要或有意义。

文档

使用 com.gradle.plugin-publish 插件的主要文档在插件门户网站上。在Gradle 手册中还有其他文档,但请注意,手册将从 Gradle 7.6 开始重点介绍此新版本的 com.gradle.plugin-publish

结论

通过这种简化和清晰的设置,我们鼓励插件作者尽快采用此新版本。

我们期待您在我们的社区 SlackGradle 论坛上提供反馈。如果您遇到新版本的问题,或者想表达您对我们工作的支持,请随时与我们联系。

讨论