英文:
How to force gradle to NOT to download dependencies (and load them from it's cache instead)?
问题
在将我的项目从Ubuntu迁移到Mac时,我将Java依赖项和jar从Ubuntu的~/.gradle/cache
复制到Mac的~/.gradle/caches/artifacts
,以避免让gradle再次下载依赖项。令我惊讶的是,运行gradle idea
(我们使用Intellij Idea)会清空~/.gradle/caches/artifacts
文件夹,并开始重新下载依赖项,尽管如此。
我看到许多关于如何强制gradle重新下载依赖项(例如使用--refresh-dependencies标志)的资源和stackoverflow上的问题,但迄今为止还没有关于如何阻止gradle这样做,而是查找其本地缓存的解决方法。
是否有一个标志或开关可以帮助实现这个任务?
我正在使用gradle 1.0-milestone-3,不幸的是,暂时没有升级的特权。
英文:
While shifting my project from Ubuntu to Mac, I copied the Java dependencies and jars from the ~/.gradle/cache
on Ubuntu to ~/.gradle/caches/artifacts
on Mac to avoid having gradle download the dependencies all over again. To my surprise, running gradle idea
(we are using Intellij Idea) emptied the ~/.gradle/caches/artifacts
folder and started downloading the dependencies again, nevertheless
I saw numerous resources and questions on SOF talk about forcing gradle to redownload the dependencies (using the --refresh-dependencies flag, for example), but none so far on how to prevent gradle from doing that and instead look into its local cache.
Is there a flag or switch which can help achieve this task?
I am using gradle 1.0-milestone-3, and unfortunately, don't have the privilege to upgrade it anytime soon.
答案1
得分: 1
有一个--offline标志,强制Gradle不访问网络资源。因此,它将使用Gradle依赖项缓存,而不会尝试从远程服务器刷新依赖项。参见 https://stackoverflow.com/q/32171524/4494577。
当然,正如lance-java在他的答案中提到的,可重定位的依赖项缓存是v6.1+的功能(参见使依赖项缓存可重定位#1338),因此不适用于使用早期Gradle版本生成的缓存。
英文:
There's --offline flag which forces Gradle not to access network resources. As a consequence it will use Gradle dependency cache and not try to refresh the dependencies from the remote server. See https://stackoverflow.com/q/32171524/4494577.
Of course, as lance-java mentioned in his answer relocatable dependency cache is a v6.1+ feature (see Make dependency caches relocateable#1338) and therefore won't work for caches generated with earlier Gradle versions.
答案2
得分: 0
这在 Gradle 6.1 之前是不受支持的,您是否在使用 Gradle 6.1.1 或更高版本?
早期的 Gradle 版本在每个项目的缓存键中包含绝对文件路径,这使得从一台机器复制构建缓存并在另一台机器上使用变得困难。
请参阅Gradle 6.1.1 发布说明以了解可移植构建缓存的相关信息。
英文:
This was not supported before Gradle 6.1, are you using Gradle 6.1.1 or later?
Earlier versions of Gradle included the absolute file path in each item's cache key which made it difficult to copy a build cache from one machine and use it on another.
See the Gradle 6.1.1 Release Notes regarding the relocatable build cache
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论