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에서 얻을 수있는 것처럼이 정보를 어떻게 얻을 수 있습니까?

누군가가 내 jar 목록에 Hibernate jar를 (많이) 가져오고 있다는 것은 말할 것도없고, Hibernate를 사용하지 않기 때문에 누가 누구인지 알고 싶고 그 종속성을 제거하려고합니다.

답변:


127

명령은 gradle dependencies이며 출력은 Gradle 1.2에서 훨씬 향상되었습니다. (오늘 이미 1.2-rc-1을 사용해 볼 수 있습니다.)


사실, 나는 그것을 시도했다 .... 내 의존성이 나의 최하위 하위 프로젝트 (즉, 다른 모든 사람들이 의존하는 프로젝트)에 있고 메인 프로젝트가 아니라는 것을 깨달았다 ...이 시점에서 그것이 나쁘거나 좋은지 확실하지 않다 .
Dean Hiller 2012 년

관심있는 특정 프로젝트에 대해 명령을 실행해야합니다. 일반적으로 프로젝트 디렉터리로 이동하여 여기에서 명령을 실행합니다.
Peter Niederwieser

9
이것은 모든 유형의 프로젝트에서 작동하지 않습니다. '구성 없음'이 표시되고이 작업을 수행하려면 다른 작업을 실행해야합니다. 바라건대 언젠가 gradle이 이것을 처리하여 실제 명령이 예측 가능할 것입니다.
R. van Twisk

2
전 이적 종속성을 포함하기위한 플래그가 있습니까?
thetwan 2014-08-07

1
자동으로 포함됩니다.
Peter Niederwieser

121

아, 내 마스터 프로젝트에 종속성이 없었기 때문에 "gradle 종속성"은 하위 프로젝트 종속성이 아닌 해당 항목 만 나열하므로 올바른 명령은

 gradle :<subproject>:dependencies

그래서 나를 위해 이것은

 gradle :master:dependencies

20
-r재귀에 대해 말할 수 있다면 좋습니다
Blundell 2013

38

프로젝트 및 모든 하위 프로젝트에 대한 종속성을 보려면 최상위 build.gradle에서 사용하세요.

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

그런 다음 gradle을 호출합니다.

gradle listAllDependencies

2
블로그 게시물에서 그 접근 방법에 대한 자세한 내용 : solidsoft.wordpress.com/2014/11/13/...
마르신 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

모든 종속성을 파일 dependency.txt에 기록합니다.


4

react-native프로젝트 에서 gradle 종속성을 디버깅하려는 경우 명령은 (에서 실행 됨 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.