简化插件发布插件

目录

引言

通过插件发布插件来配置Gradle插件发布到Portal。最近发布的1.0.0版本的插件通过更强的约定和更直接的配置显著改进了发布过程。

更强的约定 #

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

插件发布插件也拥有悠久的历史,并最终支持所有各种辅助插件的组合。这导致了发布插件的方式过多,配置选项过多,有些选项的语义根据具体设置难以理解。

例如,发布元数据可以通过maven-publish插件生成,也可以通过其他临时方式生成。根据此情况,插件和标记GAV坐标都可能有所不同,并产生令人惊讶的效果。

插件发布插件的1.0.0版本通过收紧和强制执行约定来解决这些问题。主要的辅助插件总是自动应用:

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

明确的配置 #

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

为确保如此,插件发布插件的1.0.0版本移除了pluginBundle.plugins块,因为它与gradlePlugin.plugins重复。

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

一旦Gradle 7.6发布,此处将更新示例以包含进一步的改进。

清晰定义的交互 #

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

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

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

重大变更 #

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

插件发布插件支持的最低Gradle版本变为4.10.3。此前为3.5.1

强制使用maven-publish插件也导致mavenCoordinateswithDependencies块被完全移除。它们提供的功能不再需要或有意义。

文档 #

使用com.gradle.plugin-publish插件的主要文档位于插件门户。Gradle手册中还有附加文档,但请注意,手册将仅从Gradle 7.6开始关注此新版本的com.gradle.plugin-publish

结论 #

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

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

讨论