返回
巧用Maven dependency:tree查找引用问题的两种方法
开发工具
2024-02-19 01:07:21
在工作中,相信老铁问用的最多的工具就是 mvn dependency:tree 来查找问题。但是笔者在工作中发现,打印有个问题。这样说有点抽象,我举一个例子:
[INFO] +- com.google.cloud:google-cloud-bigquery:1.123.10:jar
[INFO] +- com.google.cloud:google-cloud-bigquerydatatransfer:1.123.10:jar
[INFO] +- com.google.cloud:google-cloud-core:2.6.1:jar
[INFO] | +- com.google.api-core:google-api-core:2.6.1:jar
[INFO] | +- com.google.api.grpc:grpc-google-common-protos:1.15.0:jar
[INFO] | +- com.google.auth:google-auth-library-oauth2-http:1.7.5:jar
[INFO] | +- com.google.auth:google-auth-library-oauth2-http-client:1.7.5:jar
[INFO] | +- com.google.auth:google-auth-library-oauth2-registry:1.7.5:jar
[INFO] | +- com.google.cloud:google-cloud-core-grpc:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-core-http:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-trace-grpc:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-trace-http:2.6.1:jar
[INFO] | +- com.google.common:google-common:30.1.1-jre:jar
[INFO] | +- com.google.protobuf:protobuf-java-util:3.19.4:jar
[INFO] | +- com.google.protobuf:protobuf-java:3.19.4:jar
[INFO] +- com.google.cloud:google-cloud-bigqueryconnection:1.123.10:jar
[INFO] | +- com.google.cloud:google-cloud-bigquerydatatransfer:1.123.10:jar
[INFO] | +- com.google.cloud:google-cloud-core:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-storage:2.6.1:jar
[INFO] | | +- com.google.api-core:google-api-core:2.6.1:jar
[INFO] | | +- com.google.cloud:google-cloud-core-grpc:2.6.1:jar
[INFO] | | +- com.google.cloud:google-cloud-core-http:2.6.1:jar
[INFO] | | +- com.google.cloud:google-cloud-trace-grpc:2.6.1:jar
[INFO] | | +- com.google.cloud:google-cloud-trace-http:2.6.1:jar
[INFO] | | +- com.google.common:google-common:30.1.1-jre:jar
[INFO] | | +- com.google.protobuf:protobuf-java-util:3.19.4:jar
[INFO] | | +- com.google.protobuf:protobuf-java:3.19.4:jar
[INFO] | +- com.google.http-client:google-http-client-gson:1.39.2:jar
[INFO] +- com.google.cloud:google-cloud-bigquerydatatransfer:1.123.10:jar
[INFO] | +- com.google.cloud:google-cloud-bigquery:1.123.10:jar
[INFO] | +- com.google.cloud:google-cloud-core:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-storage:2.6.1:jar
[INFO] | | +- com.google.api-core:google-api-core:2.6.1:jar
[INFO] | | +- com.google.cloud:google-cloud-core-grpc:2.6.1:jar
[INFO] | | +- com.google.cloud:google-cloud-core-http:2.6.1:jar
[INFO] | | +- com.google.cloud:google-cloud-trace-grpc:2.6.1:jar
[INFO] | | +- com.google.cloud:google-cloud-trace-http:2.6.1:jar
[INFO] | | +- com.google.common:google-common:30.1.1-jre:jar
[INFO] | | +- com.google.protobuf:protobuf-java-util:3.19.4:jar
[INFO] | | +- com.google.protobuf:protobuf-java:3.19.4:jar
[INFO] | +- com.google.http-client:google-http-client-gson:1.39.2:jar
[INFO] +- com.google.cloud:google-cloud-storage:2.6.1:jar
[INFO] | +- com.google.api-core:google-api-core:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-core-grpc:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-core-http:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-trace-grpc:2.6.1:jar
[INFO] | +- com.google.cloud:google-cloud-trace-http:2.6.1:jar
[INFO] | +- com.google.common:google-common:30.1.1-jre:jar
[INFO] | +- com.google.protobuf:protobuf-java-util:3.19.4:jar
[INFO] | +- com.google.protobuf:protobuf-java:3.19.4:jar
可以看到,mvn dependency:tree 打印出的信息层次混乱,当依赖层级非常深时,不方便阅读与定位。为了解决这个问题,我们可以通过一些参数来让打印的结果更加清晰。
一、单一层次依赖打印
可以通过-Dverbose 参数让 mvn dependency:tree 只打印给定artifact的单一层次依赖:
mvn dependency:tree -Dverbose -Dincludes=com.google.cloud:google-cloud-storage
打印结果如下:
[INFO] com.google.cloud:google-cloud-storage:jar:2.6.1
[INFO] +- com.google.api-core:google-api-core:jar:2.6.1:compile
[INFO] | +- com.google.common:google-common:jar:30.1.1-jre:compile
[INFO] | +- com.google.protobuf:protobuf-java-util:jar:3.19.4:compile
[INFO] | \- com.google.protobuf:protobuf-java:jar:3.19.4:compile
[INFO] +- com.google.cloud:google-cloud-core-grpc:jar:2.6.1:compile
[INFO] | +- com.google.cloud:google-cloud-core:jar:2.6.1:compile
[INFO] | +- com.google.api-core:google-api-core:jar:2.6.1:compile
[INFO] | | +- com.google.common:google-common:jar:30.1.1-jre:compile
[INFO] | | +- com.google.protobuf:protobuf-java