คำสั่งกราฟการพึ่งพาสิ่งประดิษฐ์ Gradle คืออะไร


123

ฉันอ่านความคิดเห็นนี้ในเอกสาร 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.

ฉันมีขวดโหลบางชนิดที่นำเข้ามา แต่ฉันต้องหาว่ามาจากไหน โดยปกติฉันจะยกเว้นมันทั่วโลก แต่ฉันต้องการข้อมูลบางอย่างเกี่ยวกับลำดับชั้นที่นี่ ฉันจะได้รับข้อมูลเช่นนี้จาก Ivy และ Maven ได้อย่างไร

ไม่ต้องพูดถึงว่ามีคนนำขวด Hibernate (จำนวนมาก) มาไว้ในรายการ jar ของฉันและฉันอยากรู้จริงๆว่าใครตั้งแต่ฉันไม่ได้ใช้ Hibernate และพยายามตัดการพึ่งพานั้นออกไป

คำตอบ:


128

คำสั่งคือgradle dependenciesและเอาต์พุตได้รับการปรับปรุงอย่างมากใน Gradle 1.2 (คุณสามารถลอง 1.2-rc-1 ได้แล้ววันนี้)


ที่จริงฉันพยายามแล้ว .... ฉันตระหนักว่าการอ้างอิงของฉันอยู่ในโครงการย่อยระดับต่ำสุดของฉัน (เช่นโครงการที่ทุกคนพึ่งพา) และไม่ได้อยู่ในโครงการหลัก ... ไม่แน่ใจว่าจุดนี้ไม่ดีหรือดี .
Dean Hiller

คุณต้องเรียกใช้คำสั่งสำหรับโปรเจ็กต์เฉพาะที่คุณสนใจโดยปกติคุณจะลงซีดีในไดเร็กทอรีโปรเจ็กต์และรันคำสั่งจากที่นั่น
Peter Niederwieser

9
สิ่งนี้ใช้ไม่ได้กับโครงการทุกประเภท ฉันได้รับ 'ไม่มีการกำหนดค่า' และจำเป็นต้องเรียกใช้อย่างอื่นเพื่อดำเนินการนี้ หวังว่าวันหนึ่ง gradle จะจัดการกับสิ่งนี้ดังนั้นคำสั่งที่แท้จริงจะถูกกำหนดไว้ล่วงหน้า
R. van Twisk

2
มีแฟล็กสำหรับการรวมการอ้างอิงแบบสกรรมกริยาหรือไม่
thetwan

1
รวมโดยอัตโนมัติ
Peter Niederwieser

121

อ่าเนื่องจากฉันไม่มีการอ้างอิงในโปรเจ็กต์หลักของฉัน "การพึ่งพาการไล่ระดับ" จะแสดงรายการที่อ้างอิงเท่านั้นไม่ใช่การอ้างอิงโครงการย่อยดังนั้นคำสั่งที่ถูกต้องจึงกลายเป็น

 gradle :<subproject>:dependencies

สำหรับฉันนี่คือ

 gradle :master:dependencies

20
ดีถ้าคุณสามารถพูด-rซ้ำได้
Blundell

38

หากคุณต้องการดูการอ้างอิงของโปรเจ็กต์และโปรเจ็กต์ย่อยทั้งหมดที่ใช้ใน build.gradle ระดับบนสุดของคุณ:

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

จากนั้นโทรหา gradle:

gradle listAllDependencies

2
รายละเอียดเพิ่มเติมเกี่ยวกับแนวทางดังกล่าวในบล็อกโพสต์: solidsoft.wordpress.com/2014/11/13/…
Marcin Zajączkowski

9
คุณสามารถเพิ่มสิ่งนี้ลงในของคุณ~/.gradle/init.gradleแทนที่จะเพิ่มลงในทุกงานสร้าง จากนั้นใช้งานได้กับทุกโครงการในเครื่องของคุณ แต่สำหรับคุณเท่านั้น
derekv

24

หากคุณมีการกำหนดค่าเป็นจำนวนมากผลลัพธ์อาจค่อนข้างยาว หากต้องการแสดงการอ้างอิงสำหรับการกำหนดค่ารันไทม์ให้รัน

gradle dependencies --configuration runtime

15

หากคุณต้องการเรียกซ้ำเพื่อรวมโปรเจ็กต์ย่อยคุณสามารถเขียนด้วยตัวเองได้ตลอดเวลา:

วางในระดับบนสุด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
        }
    }
}

ทำงานด้วย:

gradle allDeps

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

จะเขียนการอ้างอิงทั้งหมดไปยังไฟล์ dependencies.txt


4

สำหรับผู้ที่ต้องการดีบักการพึ่งพาการไล่ระดับสีในreact-nativeโครงการคำสั่งคือ (ดำเนินการจากprojectname/android)

./gradlew app:dependencies --configuration compile

0

ใน Gradle เวอร์ชันล่าสุด (เช่น 5+) หากคุณเรียกใช้งานบิลด์ด้วยแฟล็ก--scanจะบอกข้อมูลที่เป็นประโยชน์ทุกประเภทรวมถึงการอ้างอิงในเบราว์เซอร์ที่คุณสามารถคลิกไปรอบ ๆ

gradlew --scan clean build

มันจะวิเคราะห์อึออกจากสิ่งที่เกิดขึ้นในบิลด์นั้น สวยเนี๊ยบ


1
แต่วิเคราะห์เฉพาะเป้าหมายที่วิ่งไม่เต็มกราฟ :(
Dean Hiller

ความจริง! มันขึ้นอยู่กับสิ่งที่คุณต้องการ ฉันคิดว่าการพึ่งพาสำหรับเป้าหมายที่วิ่งนั้นมีพลังมากกว่า มันจะบอกคุณว่าทำไมคำสั่งชุดหนึ่งดูเหมือนทำสิ่งผิด
Ryan Shillington

ฉันต้องการกราฟแบบเต็มจริงๆดังนั้นฉันจึงไม่ต้องทดสอบแต่ละโหนด tbh .... ซึ่งค่อนข้างน่าเบื่อ .... แม้ว่าจะใช้เวลาสักครู่ แต่ก็มีประโยชน์มากกว่า แต่ฉันไม่เห็นวิธีทำ ในเวอร์ชันที่ใหม่กว่า
Dean Hiller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.