简化 Plugin-Publish 插件

目录

介绍

使用 Plugin-Publish 插件,可以将 Gradle 插件发布到 Portal。最近发布的 1.0.0 版本插件通过更强的约定和更直接的配置显著改进了这一过程。

更强的约定 #

Gradle 插件开发历史悠久,并逐渐发展为使用辅助插件来帮助您设置插件项目。最重要的辅助插件包括

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

例如,发布元数据可以通过 maven-publish 插件或其他临时方式生成。根据这一点,插件和标记 GAV 坐标都可能发生变化,并产生令人惊讶的效果。

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

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

明确的配置 #

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

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

遗憾的是,重复并不(尚未)完全消除,因此需要添加 pluginBundle.pluginTags 映射,以便为一起发布的插件定义不同的标签。更优雅的解决方案是允许在 gradlePlugin.plugins 代码块的元素中指定标签,但这只有从 Gradle 7.6 开始才有可能实现。

请在此处查看示例,以便在 Gradle 7.6 发布后了解进一步的改进。

清晰定义的交互 #

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

  • 如果应用了 Signing 插件,则插件的所有已发布工件都将自动签名。
  • 如果应用了 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 论坛上提供反馈。如果您在使用新版本时遇到问题,或者您想表达对我们工作的支持,请随时与我们联系。

讨论