简化插件发布插件
引言
通过插件发布插件来配置Gradle插件发布到Portal。最近发布的1.0.0版本的插件通过更强的约定和更直接的配置显著改进了发布过程。
更强的约定 #
Gradle插件开发历史悠久,并逐渐演变为使用辅助插件来帮助您设置插件项目。其中最重要的包括:
- Gradle插件开发插件 (
java-gradle-plugin
) - Maven发布插件 (
maven-publish
)
插件发布插件也拥有悠久的历史,并最终支持所有各种辅助插件的组合。这导致了发布插件的方式过多,配置选项过多,有些选项的语义根据具体设置难以理解。
例如,发布元数据可以通过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版本指定(并自动化)了插件发布插件与其他常用插件的交互方式:
如果应用了这些插件,用户将在控制台收到有关它们触发的自动配置的通知。
重大变更 #
为了遵循更强的约定和简化的配置精神,1.0.0版本也带来了一些重大变更。
插件发布插件支持的最低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论坛上提供反馈。如果您在使用新版本时遇到问题,或者想表达对我们工作的支持,请随时联系我们。