Gradle存储在本地文件系统上


235

Gradle如何将下载的jar文件存储在本地文件系统上?Maven将它们存储.m2在下的目录中USER_HOME,但是Gradle 会将它们存储在哪里?我检查了.gradle那里的文件夹,但只看到了编译的脚本。

Answers:


224

Gradle将工件缓存在USER_HOME/.gradle文件夹中。编译的脚本通常位于.gradle项目文件夹中的文件夹中。

如果找不到缓存,则可能是因为尚未缓存任何工件。您始终可以使用简单的脚本查看Gradle在何处缓存了工件:

apply plugin: 'java'

repositories{
  mavenCentral()
}

dependencies{
  compile 'com.google.guava:guava:12.0'
}

task showMeCache << {
  configurations.compile.each { println it }
}

现在,如果您运行gradle showMeCache它,应该将deps下载到缓存中并打印完整路径。


62
在我的Mac for Gradle 2.4上,它(当前)在中~/.gradle/caches/modules-2/files-2.1
Arjan 2015年

4
左移运算符<<在Gradle 3.2上不推荐使用mrhaki.blogspot.com/2016/11/…–
rvazquezglez

1
不推荐使用左移运算符,但仍然可以使用(从Gradle 4.10开始)。它将继续工作直到Gradle 5
Sam Sam

272

在Mac,Linux和Windows上,即在所有三个主要平台上,Gradle在以下位置存储依赖项:

~/.gradle/caches/modules-2/files-2.1

52
感谢您实际使用回答问题caches/modules-2/files-2.1,不像这里的其他答案。
spaaarky21 '02

cd %userprofile%\.gradle\caches\modules-2\files-2.1—在Windows上定位到此目录的简短命令。
德米特里·波波夫


13

如果您希望依赖性文件位于某个特定的文件夹中,则只需copy为其使用任务。例如

task copyDepJars(type: Copy) {
  from configurations.compile
  into 'C:\\Users\\athakur\\Desktop\\lib'
}

您的任务在控制台中显示NO-SOURCE,并且不复制依赖项!!
Mojtaba,

12

Gradle的本地存储库文件夹为:

  • $ USER_HOME / .gradle / caches / modules-2 / files-2.1

定义的依赖项将从远程存储库加载到gradle的本地存储库文件夹中。对于每个加载的文件,gradle将创建一个新文件夹,名称为原始文件的md5值(pom,jar,..)。依赖项文件的完整路径由组成:

  • 组标识+人为标识 + 版本+ FILE_MD5_VALUE + FILE_NAME

如果我们定义的依赖项是:

  • 编译'org.springframework:spring-jdbc:4.3.4.RELEASE'

然后该库将被加载到:

  • /$USER_HOME/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jdbc/4.3.4.RELEASE/ 42175d194cf6aa7c716c0887f30255e5c0a5262c /spring-jdbc-4.3.4.RELEASE.jar

MD5现在已弃用,它使用SHA1值
alphaguy

之后,FILE_HASH_VALUE变得更加通用。感谢您的评论alphaguy。
nix

7

我在窗户上

您应该能够在其中找到依赖项

$ USER_HOME.gradle \ caches \ artifacts-24 \ filestore


6
在我的Mac for Gradle 2.4上,它(当前)在中~/.gradle/caches/modules-2/files-2.1
Arjan 2015年

我使用Windows 10,并将其保存在以下位置:C:\ Users [user] \。gradle \ caches \ modules-2 \ files-2.1
user666

5

实际上,缓存位置取决于GRADLE_USER_HOME环境变量值。默认情况下,它$USER_HOME/.gradle基于Unix-OS和%userprofile%.\gradleWindows。
但是,如果设置此变量,则将在此路径中找到缓存目录。

无论如何,您都应该深入研究caches\modules-2\files-2.1以找到依赖关系。


3

您可以使用gradle参数--project-cache-dir "/Users/whatever/.gradle/"强制设置gradle缓存目录。

这样,您就可以确定自己知道正在使用的目录(以及为不同的项目创建不同的缓存)。


2

许多答案是正确的!我想补充一点,您可以轻松地找到您的下载位置

gradle --info build

https://stackoverflow.com/a/54000767/4471199中所述

新下载的工件将显示在stdout中:

Downloading https://plugins.gradle.org/m2/org/springframework/boot/spring-boot-parent/2.1.7.RELEASE/spring-boot-parent-2.1.7.RELEASE.pom to /tmp/gradle_download551283009937119777bin

在这种情况下,我使用了docker image gradle:5.6.2-jdk12。如您所见,docker容器/tmp用作下载位置。


1

如果它是一个Android gradle项目-您可以在$ ANDROID_HOME / extras / android / m2repository文件夹下找到android库


1

在android studio中,执行以下步骤来检查gradle下载的jar文件。

  1. 将项目结构视图设置为“项目”
  2. 在底部的外部库部分可用,将其展开。
  3. 在这里,您可以看到下载的jar文件。 在此处输入图片说明

1

在装有Eclipse中安装的“ Buildship 2.0.2”插件的Windows机器上,存储了依赖项:

$ USER_HOME.gradle \ caches \ modules-2 \ files-2.1


1

我花了一段时间才意识到这一点,因此有了额外的答案。希望它可以节省人们的时间。请注意,如果您正在运行,sudo gradle则依赖项可能不在主目录中,即使sudo echo $HOMEreturn 也是如此/Users/<my-non-root-user>/。在我的Mac上,Gradle在中缓存依赖项/private/var/root/.gradle/caches/


0

就我而言,我使用的是Ivy存储库,并且Gradle依赖项存储在中~/.ivy2/


0

我在寻找答案时偶然发现了这个。如果您使用的是intellij,则可以导航到文件位置,但是在项目资源管理器中打开外部lib文件夹,右键单击jar,然后选择“打开库设置”。在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.