如何将 Gradle 依赖项更新到最新版本
Posted
技术标签:
【中文标题】如何将 Gradle 依赖项更新到最新版本【英文标题】:How to update Gradle dependencies to their latest version 【发布时间】:2015-04-16 19:26:50 【问题描述】:有没有一种简单的方法可以让 gradle 将依赖项更新到最新的可用版本?
为了构建可重复性,我的所有依赖项都在我的 build.gradle 文件中使用这样的版本号定义:
dependencies
compile 'namespace:package1:version'
compile 'namespace:package2:version'
compile 'namespace:package3:version'
我想定期将每个包更新到最新版本。通常,这是我发布新 sprint 后要做的第一件事。
为每个包手动执行此操作真的很痛苦。理想情况下,我想要一个命令来为我更新 build.gradle 文件,但至少有一个命令可以打印出哪个包需要更新以及最新的版本号是什么。
在 ruby 领域,我会运行 bundler update。
【问题讨论】:
我写了一个python工具来更新依赖版本,你可以试试。 github.com/Jintin/andle How to check if gradle dependency has new version的可能重复 @Suhaib 是对的,***.com/a/28683488/2763883 您可以使用这个站点并搜索任何依赖项的最新版本:gradleplease.appspot.com 【参考方案1】:这就是我所能想到的。如果这样做的手动方法较少,我会很乐意接受另一个答案。
在 android Studio 中,我将每个依赖版本都替换为一个加号示例:compile 'namespace:package1:+'
同步或构建项目,这将导致所有依赖项解析为其最新版本。
在 Android Studio 中,将光标放在 build.gradle 中的每个依赖行上,然后按 alt+enter 会弹出一个菜单,您可以选择 Replace with specific version
【讨论】:
见gradle-versions-plugin。 @Ben Manes:这应该被接受。很棒的插件,干得好! 这个答案是检查更新的最佳方式!记得在第 2 步中构建项目,否则它将无法工作。 就我而言,同步不一定要下载最新版本。在重新检查服务器版本之前,似乎为缓存设置了一些超时【参考方案2】:添加到build.gradle
:
plugins
id 'com.github.ben-manes.versions' version '0.17.0'
然后您可以通过gradle dependencyUpdates
获取新版本的报告。与同名的 Maven 插件不同,似乎还没有自动更新 build.gradle
的方法。
更多文档:https://github.com/ben-manes/gradle-versions-plugin
【讨论】:
现在有一种自动更新依赖的方法:github.com/patrikerdes/gradle-use-latest-versions-plugin【参考方案3】:这不是一个很好的做法,因为库可能包含可能会破坏您的代码的更改。
一种常见的“容忍”语法
compile 'namespace:package:major_version.minor_version.revision'
会像
compile 'namespace:package:1.0.+'
考虑到 revision 被库作者用作错误修复和改进更新
注意: 我只是这样做了,你可以这样做
compile 'namespace:package:+'
编辑: 我的latest comment 中的Proof Of Concept 你可能想测试一下。这是在 5 分钟内完成的,所以不要指望它是完美的或灵活的。
【讨论】:
是的,我知道您可以用 + 替换部分版本以在构建时解析最新版本,但这会破坏构建可重复性。我想依赖特定版本作为最佳实践,并偶尔更新每个包。 特定版本的更新?主要、次要还是修订?compile 'namespace:package:1.0.+'
将更新为最新版本,compile 'namespace:package:1.+'
将更新为最新的次要版本,compile 'namespace:package:+'
将更新为最新的主要版本。
我不想加分,因为这意味着每次运行构建时,我都可以获得不同版本的库。在大部分开发过程中,版本必须保持不变,以便对其进行彻底测试。
通常在发布后我想将每个库更新到最新版本。这将每隔几个月进行一次。我在其他语言中使用的依赖工具支持这一点。 NuGet 和 bundler 就是例子。
一个脚本会修改为namespace:package:+
,然后是gradlew --refresh-dependencies
,然后是namespace:package:x.y.z
,其中x、y和z将从.idea/libraries/*.xml中读取。相当有趣的功能。【参考方案4】:
我也深受其害。而检查依赖项的最佳方法,即使是手动检查,也是通过项目结构并搜索依赖项名称,看看是否有更新的版本。
此查询仅检查 Maven 存储库中存在的依赖项的问题。至少它已经适用于 Google。
注意:如果您选择在新版本中添加依赖项,这将在您的 App Gradle 中添加重复项,因此请务必删除旧的依赖项行。
###################
另一个可能的快速修复是通过命令行:
./gradlew app:dependencies
这将生成如下所示的输出。请注意,星号指向可能的新现有版本。
【讨论】:
我不认为星号意味着可能有新版本。它在依赖关系树的底部这样说:(*) - 依赖关系省略(之前列出) 谢谢 - 现在在项目结构中一直有一个“建议”选项卡,它建议所有更新。比在 xml 文件的版本中随机插入要好得多。以上是关于如何将 Gradle 依赖项更新到最新版本的主要内容,如果未能解决你的问题,请参考以下文章