简化 Plugin-Publish 插件
介绍
使用 Plugin-Publish 插件,可以将 Gradle 插件发布到 Portal。最近发布的 1.0.0 版本插件通过更强的约定和更直接的配置显著改进了这一过程。
更强的约定 #
Gradle 插件开发历史悠久,并逐渐发展为使用辅助插件来帮助您设置插件项目。最重要的辅助插件包括
- Gradle 插件开发插件 (
java-gradle-plugin
) - Maven 发布插件 (
maven-publish
)
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
插件设为强制性也导致 mavenCoordinates
和 withDependencies
代码块被完全移除。它们提供的功能不再需要或有意义。
文档 #
使用 com.gradle.plugin-publish
插件的主要文档位于插件门户网站上。Gradle 手册中也有额外的文档,但请注意,手册将仅从 Gradle 7.6
开始关注这个新版本的 com.gradle.plugin-publish
。
结论 #
通过这种简化和清晰的设置,我们鼓励插件作者尽快采用这个新版本。
我们期待您在我们的社区 Slack 或 Gradle 论坛上提供反馈。如果您在使用新版本时遇到问题,或者您想表达对我们工作的支持,请随时与我们联系。