Lưu trữ cấp trên hệ thống tệp cục bộ


235

Làm thế nào để Gradle lưu trữ các tệp jar đã tải xuống trên hệ thống tệp cục bộ? Maven lưu trữ chúng trong .m2thư mục bên dưới USER_HOME, nhưng Gradle lưu trữ chúng ở đâu? Tôi đã kiểm tra .gradlethư mục ở đó, nhưng chỉ thấy các tập lệnh được biên dịch.

Câu trả lời:


224

Gradle lưu trữ các tạo phẩm trong USER_HOME/.gradlethư mục. Các tập lệnh được biên dịch thường nằm trong .gradlethư mục trong thư mục dự án của bạn.

Nếu bạn không thể tìm thấy bộ đệm, có thể đó là do bạn chưa lưu trữ bất kỳ bộ tạo tác nào. Bạn luôn có thể thấy Gradle có các tạo phẩm được lưu trong bộ nhớ cache với một tập lệnh đơn giản:

apply plugin: 'java'

repositories{
  mavenCentral()
}

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

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

Bây giờ nếu bạn chạy gradle showMeCachenó nên tải deps vào bộ đệm và in đường dẫn đầy đủ.


62
Trên máy Mac của tôi cho Lớp 2.4, nó (hiện tại) đang ở ~/.gradle/caches/modules-2/files-2.1.
Arjan

4
toán tử dịch chuyển trái <<đang bị phản đối trên Gradle 3.2 mrhaki.blogspot.com/2016/11/iêu
rvazquezglez

1
Toán tử dịch chuyển trái bị phản đối nhưng vẫn hoạt động (kể từ Lớp 4.10). Nó sẽ tiếp tục hoạt động cho đến Lớp 5
Sam

272

Trên Mac, Linux và Windows, tức là trên cả 3 nền tảng chính, Gradle lưu trữ các phụ thuộc tại:

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

52
Cảm ơn bạn đã thực sự trả lời câu hỏi với caches/modules-2/files-2.1, không giống như mọi câu trả lời khác ở đây.
spaaarky21

cd %userprofile%\.gradle\caches\modules-2\files-2.1- một lệnh ngắn để xác định vị trí thư mục này trên Windows.
Dmitriy Popov


13

Nếu bạn muốn các tệp phụ thuộc của bạn nằm trong một số thư mục cụ thể, bạn chỉ cần sử dụng một copytác vụ cho nó. Ví dụ

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

Nhiệm vụ của bạn in KHÔNG NGUỒN trong bảng điều khiển và không sao chép phụ thuộc !!
Mojtaba

12

Thư mục kho lưu trữ cục bộ của Gradle là:

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

Các phụ thuộc được xác định sẽ được tải từ kho lưu trữ từ xa vào thư mục kho lưu trữ cục bộ của lớp. Đối với mỗi tệp được tải, gradle sẽ được tạo một thư mục mới có tên md5 với giá trị của tệp gốc (pom, jar, ..). Đường dẫn đầy đủ cho tệp phụ thuộc được tạo từ:

  • groupid + artifactid + phiên bản + FILE_MD5_VALUE + FILE_NAME

Nếu phụ thuộc được xác định của chúng tôi là:

  • biên dịch 'org.springframework: spring-jdbc: 4.3.4.RELEASE'

Sau đó, thư viện sẽ được tải vào:

  • /$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 không được chấp nhận ngay bây giờ, nó sử dụng giá trị SHA1
alphaguy

Sau đó, FILE_HASH_VALUE đã chung chung hơn. Cảm ơn vì alphaguy bình luận của bạn.
nix

7

Tôi đang ở trên cửa sổ

Bạn sẽ có thể tìm thấy sự phụ thuộc bên trong

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


6
Trên máy Mac của tôi cho Lớp 2.4, nó (hiện tại) đang ở ~/.gradle/caches/modules-2/files-2.1.
Arjan

Tôi sử dụng windows 10 và nó được lưu trong: C: \ Users [user] \. Gradle \ caches \ module-2 \ files-2.1
user666

5

Trong thực tế, vị trí bộ đệm phụ thuộc vào GRADLE_USER_HOMEgiá trị biến môi trường. Theo mặc định, nó $USER_HOME/.gradledựa trên hệ điều hành Unix và %userprofile%.\gradletrên Windows.
Nhưng nếu bạn đặt biến này, thư mục bộ đệm sẽ nằm ở đường dẫn này.

Và bất kể trường hợp nào, bạn nên đào sâu vào caches\modules-2\files-2.1để tìm ra sự phụ thuộc.


3

Bạn có thể sử dụng đối số lớp --project-cache-dir "/Users/whatever/.gradle/"để buộc thư mục bộ đệm lớp.

Bằng cách này, bạn có thể chắc chắn rằng bạn biết thư mục nào đang được sử dụng (cũng như tạo các bộ đệm khác nhau cho các dự án khác nhau)


2

Nhiều câu trả lời là đúng! Tôi muốn thêm rằng bạn có thể dễ dàng tìm thấy vị trí tải xuống của mình với

gradle --info build

như được mô tả trong https://stackoverflow.com/a/54000767/4471199 .

Các tạo phẩm mới được tải xuống sẽ được hiển thị trong thiết bị xuất chuẩn:

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

Trong trường hợp này, tôi đã sử dụng hình ảnh docker gradle:5.6.2-jdk12. Như bạn có thể thấy, container docker sử dụng /tmplàm vị trí tải xuống.


1

Trong trường hợp đó là một dự án phân lớp Android - bạn có thể tìm thấy các thư viện Android bên dưới thư mục $ ANDROID_HOME / extend / android / m2reposeective của bạn


1

Trong studio android thực hiện các bước sau để kiểm tra tệp jar được tải xuống.

  1. Đặt chế độ xem cấu trúc dự án thành "Dự án"
  2. Ở dưới cùng phần thư viện bên ngoài có sẵn, mở rộng nó.
  3. Ở đây bạn có thể thấy các tập tin jar được tải xuống. nhập mô tả hình ảnh ở đây

1

Trên máy tính windows của tôi có plugin "Buildship 2.0.2" được cài đặt trong nhật thực, các phụ thuộc được lưu trữ:

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


1

Phải mất một thời gian tôi mới nhận ra điều này, do đó câu trả lời bổ sung. Hy vọng nó có thể tiết kiệm thời gian folks. Lưu ý rằng nếu bạn đang chạy sudo gradlecác phụ thuộc có thể không có trong thư mục chính của bạn, ngay cả khi sudo echo $HOMEtrả về /Users/<my-non-root-user>/. Trên máy Mac của tôi, Gradle đang lưu trữ các phụ thuộc vào /private/var/root/.gradle/caches/.


0

Đối với trường hợp của tôi, tôi đã sử dụng kho lưu trữ Ivy và các phụ thuộc Gradle của tôi được lưu trữ trong ~/.ivy2/.


0

Tôi chỉ vấp phải điều này trong khi tìm kiếm câu trả lời này. Nếu bạn đang sử dụng intellij, bạn có thể điều hướng đến vị trí tệp, nhưng mở thư mục lib bên ngoài trong trình thám hiểm dự án, nhấp chuột phải vào tệp và chọn Mở Cài đặt thư viện.nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.