gradle을 사용하여 무엇에 의존하는 나무를 만들 수 있습니까?
나는 프로젝트를 가지고 있으며 모든 의존성을 찾고 싶습니다. 따라서 앞으로 선언 등으로 조금 정리 할 수 있습니다.
gradle dependencies
작동해야합니다. gradlew app:dependencies
안드로이드 때문에 아마 모든 사람이 가진 방식에 미친 것입니다.
gradle을 사용하여 무엇에 의존하는 나무를 만들 수 있습니까?
나는 프로젝트를 가지고 있으며 모든 의존성을 찾고 싶습니다. 따라서 앞으로 선언 등으로 조금 정리 할 수 있습니다.
gradle dependencies
작동해야합니다. gradlew app:dependencies
안드로이드 때문에 아마 모든 사람이 가진 방식에 미친 것입니다.
답변:
Android의 경우이 줄을 사용하십시오.
gradle app:dependencies
또는 gradle wrapper가있는 경우 :
./gradlew app:dependencies
app
프로젝트 모듈은 어디에 있습니까 ?
또한, 당신이 뭔가가 있는지 확인하려면 compile
대 testCompile
대 androidTestCompile
의존성뿐만 아니라 그것을 당겨 무엇 :
./gradlew :app:dependencyInsight --configuration compile --dependency <name>
./gradlew :app:dependencyInsight --configuration testCompile --dependency <name>
./gradlew :app:dependencyInsight --configuration androidTestCompile --dependency <name>
./gradlew
대신에gradle
Project 'app' not found in root project
이 명령을 실행할 때 오류가 발생 합니다. 그러나 Benjamins 솔루션 은 효과가있었습니다.
./gradlew :dependencies
작동합니다. 모든 프로젝트의 종속성을 나열하지만 올바른 프로젝트를 쉽게 찾을 수 있습니다.
명령을 사용하여 종속성 트리를 렌더링 할 수 있습니다 gradle dependencies
. 자세한 정보 는 온라인 사용자 안내서에서 11.6.4 프로젝트 종속성 나열 섹션을 확인하십시오 .
build.gradle
파일 이없는 잘못된 디렉토리에서 명령을 실행 중이거나 빌드 파일에 플러그인이 적용되지 않은 것 같습니다.
./gradlew dependencies
의 콘솔 출력을 탐색하기 어려운 경우 프로젝트 보고서 플러그인을gradle dependencies
추가 할 수 있습니다 .
apply plugin: 'project-report'
다음을 사용하여 HTML 보고서를 생성하십시오.
$ ./gradlew htmlDependencyReport
보고서는 일반적으로 build/reports/project/dependencies/index.html
gradle htmlDependencyReport
Android Studio (최소 v2.3.3 이후)에서는 UI에서 직접 명령을 실행할 수 있습니다.
온 클릭 Gradle을 탭을 클릭 한 다음 두 번 클릭하여 : yourmodule -> 작업 -> 안드로이드 -> androidDependencies
Gradle 콘솔 탭 에 트리가 표시됩니다
종종 완전한 test
, compile
및 androidTestCompile
의존성 그래프가 너무 커서 함께 검토하기가 어렵습니다. compile
의존성 그래프 만 원한다면 다음을 사용할 수 있습니다.
./gradlew app:dependencies --configuration compile
출처 : Gradle Docs 섹션 4.7.6
참고 : compile
최신 버전의 Gradle에서는 더 이상 사용되지 않으며 최신 버전에서는 모든 compile
종속성을 로 변경하는 것이 좋습니다 implementation
. 여기 에이 답변을 참조 하십시오
그래프에서 종속성을 시각화하려면 gradle-dependency-graph-generator 플러그인을 사용할 수 있습니다 .
일반적으로이 플러그인의 출력은 build / reports / dependency-graph 디렉토리 에서 찾을 수 있으며 0.5.0 버전의 플러그인을 사용하는 경우 3 개의 파일 (.dot | .png | .svg)이 포함됩니다 .
실제 앱의 의존성 그래프 예 ( Chess Clock ) :
Gradle에서 상황이 나아 갔 으므로이 질문에 다른 대답이 필요하다고 생각합니다.
Gradle 4.3부터 " 빌드 스캔 "이 도입되었습니다. 모든 관련 정보는 Gradle 문서 ( 1 , 2 )에 있습니다. 나에게 이것은 현재 명확하고 체계적인 방법으로 종속성 (및 일반적으로 빌드)을 확인하는 가장 쉬운 방법 인 것 같습니다.
그들은 만들기가 매우 쉽고 그냥 실행하십시오.
gradle build --scan
(또는 ./gradlew build --scan
래퍼를 사용하는 경우)
그러면 스캔을 볼 수있는 무작위로 생성 된 링크가 생성됩니다. 해당 링크를 열면 이메일을 입력하고 링크를 완전히 제어 할 수 있습니다. 예 : 공유하거나 삭제하십시오. 그것은 가지고 빌드에 대한 정보를 많이 , 단지 종속성 없습니다. 의존성, 계층 구조,이를 얻는 데 사용되는 저장소뿐만 아니라 빌드 (성능이 큰 복잡한 빌드에 관심이있는 성능), 테스트, 콘솔 출력 및 JDK 및 JVM이 사용 된 시스템 구성, 최대 힙 크기 등
이것은 모의 프로젝트의 인쇄 화면입니다.
빌드 스캔은 발생한 내용과 이유에 대한 통찰력을 제공하는 공유 가능한 빌드 레코드입니다. scans.gradle.com에서 무료로 빌드 스캔을 생성 할 수 있습니다.
그러나 빌드 프로세스에 대한 정보 는 Gradle 서버 로 전송 됩니다. 검사가 끝나면 삭제를 완전히 제어 할 수 있습니다.
마지막으로 4.3 이전의 Gradle 버전에서도 빌드 스캔을 사용할 수 있으므로 빌드 스크립트에 스캔 플러그인을 수동으로 추가하면됩니다.
편집 :
의견에 대한 피드백을 추가 메모에 포함시키기 :
1) 실수로 또는 빌드에 대한 일부 정보가 온라인 상태 (개인 정보, 삭제 기능은 있지만 여전히 온라인 상태 임)를 이해하지 않고이 작업을 수행하는 것은 매우 어렵습니다. ).
실행할 gradle build --scan
때 다음 메시지가 나타납니다.
Publishing a build scan to scans.gradle.com requires accepting the Gradle
Terms of Service defined at https://gradle.com/terms-of-service. Do you
accept these terms? [yes, no]
명시 적으로 작성해야 yes
하며 메시지가 계속됩니다.
Publishing build scan...
https://gradle.com/s/a12en0dasdu
2) Gradle Enterprise에서는 자체 서버에서 gradle 빌드 스캔을 호스팅 할 수 있습니다. 그러나 이것에 대한 경험이 없으며 제안 된 접근 방식은 빌드 스캔에 Gradle의 서버를 사용하여 표준 Gradle 배포에 관한 것입니다.
3) Gradle 자체는 대부분의 빌드 문제를 처리하는 방법으로 빌드 스캔을 촉진합니다.
gradle build --scan
인터넷 어딘가에 빌드 세부 정보를 게시하고 삭제하려면 작동하는 전자 메일 주소와 연결해야 한다는 경고가 명확하지 않습니다 .
gradle build --scan
cmd에서 실행할 때 프롬프트가 표시 Publishing a build scan to scans.gradle.com requires accepting the Gradle Terms of Service defined at https://gradle.com/terms-of-service. Do you accept these terms? [yes, no]
됩니다.. 수동으로 작성해야합니다 yes
. 그 직후에 다음과 같은 메시지가 나타납니다. Publishing build scan... https://gradle.com/s/a12en0dasdu
(무작위 같은 유형의 링크를 넣습니다). 그래서 나는 그것이 당신에게 적절하게 경고하기 전에 믿습니다. (1/2)
안드로이드 스튜디오에서
1) 터미널을 열고 프로젝트의 루트 폴더에 있는지 확인하십시오.
2) 실행 ./gradlew app:dependencies
(그라들 래퍼를 사용하지 않는 경우 시도하십시오 gradle app:dependencies
)
실행 ./gradle dependencies
하면 프로젝트 루트 폴더의 종속성 트리 만 제공되므로 위의 방식으로 앱을 언급하는 ./gradlew app:dependencies
것이 중요합니다.
나는 이것을 실행하는 것이 유용하다는 것을 알았다.
./gradlew dI --dependency <your library>
이것은 종속성이 어떻게 해결되고 있는지 보여주고 ( dependencyInsight
), 라이브러리에서 라이브러리를 강제 또는 제외 해야하는 곳으로 디버깅하는 데 도움이됩니다.build.gradle
참조 : https://docs.gradle.org/current/userguide/tutorial_gradle_command_line.html
나를 위해, 그것은 단순히 하나의 명령이었습니다
build.gradle에서 추가 plugin
apply plugin: 'project-report'
cmd로 이동하여 다음 명령을 실행하십시오.
./gradlew htmlDependencyReport
HTML 보고서 WOW Html 보고서를 제공합니다. 💕
그게 다야
두 단계 내에서 마지막에 단일 파일의 모든 종속성을 원할 경우. 이것을 build.gradle.kts
프로젝트 루트에 추가하십시오.
project.rootProject.allprojects {
apply(plugin="project-report")
this.task("allDependencies", DependencyReportTask::class) {
evaluationDependsOnChildren()
this.setRenderer(AsciiDependencyReportRenderer())
}
}
그런 다음 적용하십시오.
./gradlew allDependencies | grep '\-\-\-' | grep -Po '\w+.*$' | awk -F ' ' '{ print $1 }' | sort | grep -v '\{' | grep -v '\[' | uniq | grep '.\+:.\+:.\+'
이렇게하면 프로젝트 및 하위 프로젝트의 모든 종속성과 모든 타사 종속성이 제공됩니다.
프로그래밍 방식으로이 작업을 수행하려면 종속성의 사용자 정의 렌더러가 필요합니다 AsciiDependencyReportRenderer
. 기본적으로 종속성의 ASCII 그래프를 인쇄하여 확장 할 수 있습니다 .