The issue.
Gradle依赖管理如下:
-
没有简单的方法来检查依赖项更新的可用性(仅使用某些第三方插件,如ben-manes/gradle-versions-plugin)并下载更新替换旧版本;
-
dependencies工件从远程存储库下载,然后存储在gradle缓存中并在后续版本中重用;但是,成功编译项目不能依赖于连接到Internet,远程存储库的可用性以及这些存储库中特定版本的依赖项的存在 .
The goal.
-
在VCS中下载并存储所有依赖项工件;
-
手动检查这些依赖项的更新并下载它们 .
2 回答
我的解决方案适用于使用
java
或android
插件的Gradle配置 .java
插件定义compile
和testCompile
配置 .compile
用于编译项目 生产环境 源所需的依赖项 .testCompile
用于编译项目测试源所需的依赖项 .让我们在
build.gradle
中定义我们自己的配置:接下来让我们创建目录:
libs/compile/downloaded
是存储download
依赖项的地方;libs/testCompile/downloaded
是将存储testDownload
依赖项的位置 .接下来我们定义几个任务 .
从
download
配置中删除依赖项:从
testDownload
配置中删除依赖项:从
download
配置下载依赖项:从
testDownload
配置下载依赖项:执行以上所有任务以更新依赖项:
接下来我们定义依赖项:
然后我们告诉
compile
和testCompile
配置应该在哪里使用用于编译的依赖项 .现在您可以下载或更新已下载的依赖项:
如果您使用的是
android
插件,那么您还可以为在Android设备上编译和运行测试所需的依赖项添加androidTestDownload
配置 . 此外,一些依赖项可以作为aar
工件提供 .这是使用
android
插件的Gradle配置示例:为了将下载的依赖项(库/ etc版本到硬编码版本)的版本锁定以使构建可重现,现在Gradle 4.8及以后版本,我们将内置“依赖锁定”支持 . 如果有人使用动态版本(Mmp / i)Major.minor.patch / interimBranch等(例如:4.或3.1 . )或从二进制存储库工具中提取工件的版本范围,这将有助于使构建重现性(例如: Artifactory / Nexus) .
使用Gradle版本4.8的任何Gradle用户都应该开始使用此新功能 . https://docs.gradle.org/4.8/userguide/dependency_locking.html For Gradle 4.8发行说明:https://docs.gradle.org/4.8/release-notes.html
过去,此依赖锁定功能已提供给Gradle社区,并通过Netflix Nebula的https://github.com/nebula-plugins/gradle-dependency-lock-plugin和https://plugins.gradle.org/plugin/nebula.dependency-lock为Gradle提供的FOSS插件提供 .