ChatGPT解决这个技术问题 Extra ChatGPT

本地文件系统上的 Gradle 存储

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


J
Jolta

在 Mac、Linux 和 Windows 上,即在所有 3 个主要平台上,Gradle 将依赖项存储在:

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

cd %userprofile%\.gradle\caches\modules-2\files-2.1 — 在 Windows 上定位到此目录的简短命令。
S
Sergey

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

如果找不到缓存,可能是因为您还没有缓存任何工件。您始终可以通过一个简单的脚本查看 Gradle 缓存工件的位置:

apply plugin: 'java'

repositories {
    mavenCentral()
}

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

task showMeCache doLast() {
    configurations.compileClasspath.each { println it }
}

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


在我的 Mac for Gradle 2.4 上,它(当前)位于 ~/.gradle/caches/modules-2/files-2.1 中。
Gradle 3.2 mrhaki.blogspot.com/2016/11/… 上已弃用左移运算符 <<
左移运算符已弃用,但仍然有效(从 Gradle 4.10 开始)。它将继续工作到 Gradle 5
如何声明 compileClasspath
I
Ivan Kochurkin

在 Windows 10 PC 中,它保存在:

C:\Users\%USERNAME%\.gradle\caches\modules-2\files-2.1\

我可以强制将该路径更改为其他位置吗?
@MohammadFaisal 是的,请参阅 stackoverflow.com/a/28927173/192373
n
nix

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

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

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

groupid + artifactid + 版本 + 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 值
之后 FILE_HASH_VALUE 更加通用。感谢您的评论 alphaguy。
d
davidxxx

事实上,缓存位置取决于 GRADLE_USER_HOME 环境变量值。默认情况下,在基于 Unix-OS 的情况下为 $USER_HOME/.gradle,在 Windows 上为 %userprofile%.\gradle
但如果您设置此变量,缓存目录将位于此路径中。

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


A
Aniket Thakur

如果您希望您的依赖文件位于某个特定文件夹中,您可以简单地使用 copy 任务。例如。

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

您的任务在控制台中打印 NO-SOURCE,并且不要复制依赖项!
m
mekbib.awoke

我在窗户上,

您应该能够找到里面的依赖项

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


在我的 Mac for Gradle 2.4 上,它(当前)位于 ~/.gradle/caches/modules-2/files-2.1 中。
我使用 Windows 10,它保存在:C:\Users[user]\.gradle\caches\modules-2\files-2.1
R
RoBeaToZ

很多答案都是正确的!我想补充一点,您可以通过以下方式轻松找到下载位置

gradle --info build

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

新下载的工件将显示在标准输出中:

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 映像 gradle:5.6.2-jdk12。如您所见,docker 容器使用 /tmp 作为下载位置。


G
Graeme

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

通过这种方式,您可以确定您知道正在使用哪个目录(以及为不同的项目创建不同的缓存)


A
Alper Akture

https://i.stack.imgur.com/IDdps.jpg


j
joensson

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


c
chetan mekha

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

将项目结构视图设置为“项目”在底部可用的外部库部分,展开它。在这里你可以看到下载的 jar 文件。


n
nanosoft

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

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


e
entpnerd

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


e
entpnerd

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