Lệnh đồ thị phụ thuộc Gradle artifact là gì?


123

Tôi đọc bình luận này trong các tài liệu Gradle :

To deal with problems due to version conflicts, reports with dependency graphs
are also very helpful. Such reports are another feature of dependency management.

Tôi có một số loại bình được mang vào nhưng tôi cần phải tìm ra nó đến từ đâu. Thông thường tôi sẽ chỉ loại trừ nó trên toàn cầu, nhưng tôi cần một số thông tin về hệ thống phân cấp ở đây. Làm thế nào để tôi có được thông tin này như tôi có thể từ Ivy và Maven?

KHÔNG đề cập đến việc ai đó đang mang các lọ Hibernate (rất nhiều) vào danh sách jar của tôi và tôi thực sự muốn biết ai vì tôi không sử dụng Hibernate và cố gắng loại bỏ sự phụ thuộc đó.

Câu trả lời:


127

Lệnh này là gradle dependencies, và đầu ra của nó được cải thiện hơn nhiều trong Lớp 1.2. (Bạn đã có thể thử 1.2-rc-1 ngay hôm nay.)


Trên thực tế, tôi đã thử điều đó .... Tôi nhận ra sự phụ thuộc của mình nằm trong tiểu dự án cấp thấp nhất của tôi (tức là cái mà mọi người khác phụ thuộc) và không phải trong dự án chính ... không chắc là điều đó xấu hay tốt vào thời điểm này .
Dean Hiller

Bạn cần chạy lệnh cho dự án cụ thể mà bạn quan tâm. Thông thường, bạn cd vào thư mục dự án và chạy lệnh từ đó.
Peter Niederwieser

9
Điều này không hoạt động trên tất cả các loại dự án. Tôi đang nhận được 'Không có cấu hình' và cần phải chạy một cái gì đó khác để thực hiện điều này. Hy vọng rằng một ngày nào đó lớp sẽ xử lý việc này để các lệnh thực tế sẽ được dự đoán trước.
R. van Twisk

2
Có một lá cờ để bao gồm các phụ thuộc bắc cầu?
thetwan

1
Chúng được bao gồm tự động.
Peter Niederwieser

121

À, vì tôi không có phụ thuộc trong dự án chính của mình, "phụ thuộc lớp" chỉ liệt kê các phụ thuộc đó và không phụ thuộc vào dự án nên lệnh chính xác đã kết thúc

 gradle :<subproject>:dependencies

vì vậy đối với tôi đây là

 gradle :master:dependencies

20
Thật tuyệt nếu bạn có thể nói -rvề đệ quy
Blundell

38

Nếu bạn muốn xem các phụ thuộc vào dự án và tất cả các dự án con sử dụng trong build.gradle cấp cao nhất của bạn:

subprojects {
    task listAllDependencies(type: DependencyReportTask) {}
}

Sau đó gọi lớp:

gradle listAllDependencies

2
Thêm chi tiết về cách tiếp cận đó trong bài đăng trên blog: solidsoft.wordpress.com/2014/11/13/iêng
Marcin Zajączkowski

9
Bạn có thể thêm nó vào ~/.gradle/init.gradlethay vì thêm nó vào mọi bản dựng. Sau đó, nó hoạt động cho tất cả các dự án trên máy của bạn, nhưng chỉ cho bạn.
derekv

24

Nếu bạn có nhiều cấu hình, đầu ra có thể khá dài. Để chỉ hiển thị các phụ thuộc cho cấu hình thời gian chạy, hãy chạy

gradle dependencies --configuration runtime

15

Nếu bạn muốn đệ quy bao gồm các tiểu dự án, bạn luôn có thể tự viết nó:

Dán vào cấp cao nhất build.gradle:

task allDeps << {
    println "All Dependencies:"
    allprojects.each { p ->
        println()
        println " $p.name ".center( 60, '*' )
        println()
        p.configurations.all.findAll { !it.allDependencies.empty }.each { c ->
            println " ${c.name} ".center( 60, '-' )
            c.allDependencies.each { dep ->
                println "$dep.group:$dep.name:$dep.version"
            }
            println "-" * 60
        }
    }
}

Chạy với:

gradle allDeps

5
gradlew -q :app:dependencies > dependencies.txt

Sẽ ghi tất cả các phụ thuộc vào tệp tinencies.txt


4

Đối với những người muốn gỡ lỗi phụ thuộc lớp trong react-nativecác dự án, lệnh là (được thực thi từ projectname/android)

./gradlew app:dependencies --configuration compile

0

Trong các phiên bản gần đây của Gradle (tức là 5+), nếu bạn chạy bản dựng của mình bằng --scancờ, nó sẽ cho bạn biết tất cả các loại thông tin hữu ích, bao gồm cả phụ thuộc, trong trình duyệt nơi bạn có thể nhấp xung quanh.

gradlew --scan clean build

Nó sẽ phân tích những thứ tào lao ra khỏi những gì đang diễn ra trong bản dựng đó. Nó khá gọn gàng.


1
nhưng nó chỉ phân tích các mục tiêu chạy không phải là biểu đồ đầy đủ :(.
Dean Hiller

Thật! Nó phụ thuộc vào những gì bạn muốn. Tôi nghĩ rằng sự phụ thuộc cho các mục tiêu đã chạy thậm chí còn mạnh hơn. Nó sẽ cho bạn biết lý do tại sao một bộ lệnh dường như làm sai.
Ryan Shillington

Tôi thực sự muốn biểu đồ đầy đủ vì vậy tôi không phải kiểm tra từng nút tbh .... điều đó khá tẻ nhạt .... ngay cả khi mất một lúc, nó hữu ích hơn nhưng tôi không thấy cách nào để làm nó trong các phiên bản mới hơn.
Dean Hiller
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.