Gradle store в локальной файловой системе

236

Как Gradle хранит загруженные файлы JAR в локальной файловой системе? Maven хранит их в .m2каталоге USER_HOME, но где Gradle хранит их? Я проверил там .gradleпапку, но увидел только скомпилированные скрипты.

manojpardeshi111
источник

Ответы:

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 в кеш и напечатайте полный путь.

Rodion
источник
62
На моем Mac для Gradle 2.4 он (в настоящее время) находится в ~/.gradle/caches/modules-2/files-2.1.
Арьян
4
оператор левого смещения <<устарел на Gradle 3.2 mrhaki.blogspot.com/2016/11/…
rvazquezglez
1
Оператор левого смещения устарел, но все еще работает (по состоянию на Gradle 4.10). Он продолжит работать до 5-го класса
Сэм
272

На Mac, Linux и Windows, т. Е. На всех трех основных платформах, Gradle хранит зависимости по адресу:

~/.gradle/caches/modules-2/files-2.1
Химаншу Хандельвал
источник
52
Спасибо, что на самом деле caches/modules-2/files-2.1ответили на вопрос , в отличие от любого другого ответа здесь.
spaaarky21
cd %userprofile%\.gradle\caches\modules-2\files-2.1- короткая команда, чтобы найти этот каталог в Windows.
Дмитрий Попов
19

В ПК с Windows 10 он сохраняется по адресу:

C:\Users\<user>\.gradle\caches\modules-2\files-2.1\
Хасан Юсеф
источник
Могу ли я принудительно изменить этот путь в другое место?
Мухаммед Фейсал
то же самое на MacOS на самом деле
Shabunc
@MohammadFaisal да, см stackoverflow.com/a/28927173/192373
Alex Кону
13

Если вы хотите, чтобы ваши файлы зависимостей находились в какой-то определенной папке, вы можете просто использовать copyдля этого задачу. Например,

task copyDepJars(type: Copy) {
  from configurations.compile
  into 'C:\\Users\\athakur\\Desktop\\lib'
}
Аникет Тхакур
источник
Ваша задача печатает NO-SOURCE в консоли и не копирует зависимости !!
Mojtaba
12

Папка локального хранилища Gradle:

  • $ USER_HOME / .gradle / кэша / модули-2 / файлы-2.1

Определенные зависимости будут загружены из удаленных репозиториев в локальную папку репозитория Gradle. Для каждого загруженного файла gradle создаст новую папку с именем md5 значения исходного файла (pom, jar, ..). Полный путь к файлу зависимости составляется из:

  • groupid + artifactid + версия + FILE_MD5_VALUE + FILE_NAME

Если наша определенная зависимость:

  • скомпилируйте 'org.springframework: spring-jdbc: 4.3.4.RELEASE'

Затем библиотека будет загружена в:

  • / $ USER_HOME/.
шухер
источник
MD5 устарел, теперь он использует значение SHA1
alphaguy
Впоследствии FILE_HASH_VALUE была более общей. Спасибо за ваш комментарий alphaguy.
nix
7

Я на окнах,

Вы должны быть в состоянии найти зависимости внутри

$ USER_HOME.gradle \ кэширует \ артефакты-24 \ FileStore

mekbib.awoke
источник
6
На моем Mac для Gradle 2.4 он (в настоящее время) находится в ~/.gradle/caches/modules-2/files-2.1.
Арьян
Я использую Windows 10, и она сохраняется в папке: C: \ Users [пользователь] \. 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чтобы найти зависимости.

davidxxx
источник
3

Вы можете использовать аргумент gradle, --project-cache-dir "/Users/whatever/.gradle/"чтобы вызвать каталог кэша gradle.

Таким образом, вы можете быть уверены, что знаете, какой каталог используется (а также создавать разные кэши для разных проектов).

Graeme
источник
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

В этом случае я использовал образ докера gradle:5.6.2-jdk12. Как видите, докер-контейнер использует в /tmpкачестве места загрузки.

RoBeaToZ
источник
1

В случае, если это проект Android Gradle - вы можете найти библиотеки Android в папке $ ANDROID_HOME / extras / android / m2repository

joensson
источник
1

В Android Studio выполните следующие действия, чтобы проверить загруженный файл jar.

  1. Установить вид структуры проекта на «Проект»
  2. Внизу доступен раздел Внешняя библиотека, разверните его.
  3. Здесь вы можете увидеть загруженные файлы JAR. введите описание изображения здесь
четан меха
источник
1

На моем компьютере с установленным плагином Buildship 2.0.2 в eclipse хранятся зависимости:

$ USER_HOME.gradle \ кэши \ модули-2 \ файлы-2.1

Nanosoft
источник
1

Мне потребовалось время, чтобы понять это, отсюда и дополнительный ответ. Надеюсь, это поможет сэкономить время. Обратите внимание, что если вы работаете, sudo gradleзависимости могут отсутствовать в вашем домашнем каталоге, даже если sudo echo $HOMEвозвращается /Users/<my-non-root-user>/. На моем Mac Gradle кэшировал зависимости в /private/var/root/.gradle/caches/.

entpnerd
источник
0

Для моего случая я использовал репозиторий Ivy, и мои зависимости Gradle были сохранены в ~/.ivy2/.

entpnerd
источник
0

Я просто наткнулся на это во время поиска этого ответа. Если вы используете intellij, вы можете перейти к расположению файла, но, открыв внешнюю папку lib в проводнике проекта, щелкните правой кнопкой мыши на банке и выберите «Открыть настройки библиотеки».введите описание изображения здесь

Альпер Актуре
источник