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


236

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

Ответы:


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 для 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.
Дмитрий Попов


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


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чтобы найти зависимости.


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

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


1

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


1

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

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

1

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

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


1

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


0

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.