内置 gradle 插件的版本号是多少?

Posted

技术标签:

【中文标题】内置 gradle 插件的版本号是多少?【英文标题】:What are the version numbers of bulit-in gradle plugins? 【发布时间】:2020-01-02 17:10:01 【问题描述】:

在我的 gradle 构建文件中,我有以下插件块

plugins 
    `java-library`
    jacoco
    checkstyle

这些都没有指定版本,但一切正常。

假设一个项目正在使用带有 gradle wrapper 的 gradle 6.0,但系统安装了 gradle 5.0。

问题:

如果我运行 gradle wrapper ./gradlew build 来自 gradle 6.0 的 java 插件将被执行。这是真的还是假的? 如果我运行系统 gradle gradle build 来自 gradle 5.0 的 java 插件将被执行。这是真的还是假的? 这些插件是捆绑到 gradle 发行版本身还是从 gradle 插件门户按需下载的? 是否因为未设置插件版本而将构建视为不可重现(就像在 maven 中一样)? 关于插件版本的 gradle 最佳做法是设置还是保留?

【问题讨论】:

【参考方案1】:

Gradle 区分 corecommunity 插件。核心插件内置于 Gradle 发行版中,可以通过其不合格的短名称(“java”与“org.gradle.java”)引用。它们不是从插件门户中检索到的。核心插件不得包含版本约束 (Javadoc Reference)。找到核心插件列表here。

社区插件由插件门户托管和检索。它们必须与版本一起在完全限定的插件 ID 中给出。

在这些指南中了解有关插件的更多信息:

Using Gradle Plugins Interface PluginDependenciesSpec

如果我运行 gradle wrapper ./gradlew build,来自 gradle 6.0 的 java 插件将被执行。这是真的还是假的?

是的,因为 Gradle Wrapper 确保构建使用指定的 Gradle 版本运行,并且核心插件与发行版捆绑在一起。

如果我运行系统 gradlegradle build,来自 gradle 5.0 的 java 插件将被执行。这是对还是错?

没错。

这些插件是捆绑到 gradle 发行版本身还是从 gradle 插件门户网站按需下载的?

捆绑,如前所述。

是否因为未设置插件版本而将构建视为不可重现(就像在 maven 中一样)?

只要使用相同的 Gradle 版本,就可以认为构建是可重现的,因为核心插件与发行版捆绑在一起。

关于插件版本的 gradle 最佳实践应该设置还是保留?

如前所述,您在这里别无选择。核心插件不能定义一个版本,而社区插件必须是一个版本。

【讨论】:

以上是关于内置 gradle 插件的版本号是多少?的主要内容,如果未能解决你的问题,请参考以下文章

问下support:appcompat v7,v4所对应的sdk版本号是多少?

Android Studio 如何快速改插件与Gradle的版本号

Android Gradle 插件自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )

Android Gradle 插件Gradle 依赖管理 ⑤ ( dependencies 依赖项拆分 | 依赖组 | 依赖名称 | 依赖版本号 | 动态指定依赖版本号 | 使用命令行查看模块 )

Gradle里面两个 依赖管理插件,可以不用关心 具体jar版本号

安卓手机的版本号是啥意思