[Gradle翻译]简化插件发布的插件

228 阅读3分钟

本文由 简悦SimpRead 转码,原文地址 [blog.gradle.org] (blog.gradle.org/simplifying…)

在Plugin-Publ...... 的帮助下,配置将Gradle插件发布到Portal上。

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块也被精简以消除所有重复。

毫不含糊的配置

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

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

不幸的是,这种重复(还)不完美,所以需要添加pluginBundle.pluginTags地图,以便能够为一起发布的插件定义不同的标签。更优雅的解决方案是允许在gradlePlugin.plugin块的元素中指定标签,但这只能从Gradle7.6开始实现。

请看一个例子这里,一旦Gradle 7.6问世,将会有进一步的改进。

明确定义的交互

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

  • 如果应用了签名插件,那么该插件的所有发布工件都将被自动签名。
  • 如果应用了影子插件,那么该插件的主jar将是影子jar,如影子插件所配置的。

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

Breaking changes

本着更强的约定和简化配置的精神,1.0.0也带来了一些突破性的变化。

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

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

文档

使用com.gradle.plugin-publish插件的主要文档在Plugin Portal。还有Gradle手册中的额外文档,但请注意,该手册只从Gradle 7.6开始关注这个新版本的com.gradle.plugin-publish

结论

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

我们希望在我们的社区SlackGradle论坛上得到你的反馈。如果你在使用新版本时遇到问题,或者你想表达你对我们工作的支持,请不要犹豫,与我们联系。


www.deepl.com 翻译