科普文:一文搞懂Maven【mvn dependency:tree 打印依赖和mvn dependency:analyze分析依赖冲突】

概叙

科普文:一文搞懂Maven-CSDN博客

科普文:一文搞懂Maven【JDK、Maven、Spring Boot、Spring Cloud版本对应关系详解】-CSDN博客

科普文:一文搞懂Maven【打包插件:maven-assembly-plugin插件 】-CSDN博客

科普文:一文搞懂Maven【依赖和依赖冲突】-CSDN博客

前面梳理了maven基本概念、依赖、依赖传递、依赖冲突和解决版本、以及打包插件。这里我们继续看看两个常用的依赖分析命令:mvn dependency:tree、mvn dependency:analyze。

这两个命令是通过Maven插件如maven-dependency-plugin和versions-maven-plugin来自动化依赖管理和仲裁。

  1. 分析依赖冲突/打印未使用依赖包:mvn dependency:analyze
  2. 打印依赖树/检查依赖冲突:mvn dependency:tree
  3. 使用最新版本的依赖:mvn versions:use-latest-releases

打印依赖树/检查依赖冲突:mvn dependency:tree

  • maven中有很多包会重复引入依赖,首先jar包冲突后会有就近原则和先声明者优先(前面的优先)

mvn dependency:tree > tree.txt
打印所有依赖关系,并输出到text.txt
mvn dependency:tree -Dverbose > tree.txt
打印指定包的依赖关系
mvn dependency:tree -Dverbose -Dincludes=net.masterthought:maven-cucumber-reporting:jar:3.13.1
mvn dependency:tree -Dverbose -Dincludes=org.springframework:spring-context-support

当然也可以直接通过idea来

D:\project\javaSummary\zcloud\4-springboot>mvn dependency:tree -Dverbose
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< com.zxx.study.boot:4-springboot >-------------------
[INFO] Building 4-springboot 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ 4-springboot ---
[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2
[INFO] com.zxx.study.boot:4-springboot:jar:1.0.0-SNAPSHOT
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.6.8:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.6.8:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:2.6.8:compile
[INFO] |  |  |  +- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |  |  \- (org.springframework:spring-context:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework.boot:spring-boot-autoconfigure:jar:2.6.8:compile - version managed from 2.6.15; omitted for duplicate)
[INFO] |  |  +- (org.springframework.boot:spring-boot-starter-logging:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] |  |  +- org.springframework:spring-core:jar:5.3.20:compile
[INFO] |  |  |  \- org.springframework:spring-jcl:jar:5.3.20:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.29:compile
[INFO] |  +- (org.springframework.boot:spring-boot-starter-json:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.6.8:compile
[INFO] |  |  +- (jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile - omitted for duplicate)
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.63:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.63:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.63:compile
[INFO] |  |     \- (org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.63:compile - omitted for duplicate)
[INFO] |  +- org.springframework:spring-web:jar:5.3.20:compile
[INFO] |  |  +- org.springframework:spring-beans:jar:5.3.20:compile
[INFO] |  |  |  \- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |  \- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  \- org.springframework:spring-webmvc:jar:5.3.20:compile
[INFO] |     +- org.springframework:spring-aop:jar:5.3.20:compile
[INFO] |     |  +- (org.springframework:spring-beans:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     |  \- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     +- (org.springframework:spring-beans:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     +- org.springframework:spring-context:jar:5.3.20:compile
[INFO] |     |  +- (org.springframework:spring-aop:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     |  +- (org.springframework:spring-beans:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     |  +- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     |  \- (org.springframework:spring-expression:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     +- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     +- org.springframework:spring-expression:jar:5.3.20:compile
[INFO] |     |  \- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |     \- (org.springframework:spring-web:jar:5.3.20:compile - omitted for duplicate)
[INFO] +- org.springframework.boot:spring-boot-starter-actuator:jar:2.6.8:compile
[INFO] |  +- (org.springframework.boot:spring-boot-starter:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  +- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.6.8:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-actuator:jar:2.6.8:compile
[INFO] |  |  |  \- (org.springframework.boot:spring-boot:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework.boot:spring-boot:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework.boot:spring-boot-autoconfigure:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:runtime - omitted for duplicate)
[INFO] |  |  \- (com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.3:runtime - omitted for duplicate)
[INFO] |  \- io.micrometer:micrometer-core:jar:1.8.6:compile
[INFO] |     +- org.hdrhistogram:HdrHistogram:jar:2.1.12:compile
[INFO] |     \- org.latencyutils:LatencyUtils:jar:2.0.3:runtime
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.6.8:test
[INFO] |  +- (org.springframework.boot:spring-boot-starter:jar:2.6.8:test - omitted for duplicate)
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:2.6.8:test
[INFO] |  |  \- (org.springframework.boot:spring-boot:jar:2.6.8:test - omitted for duplicate)
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.6.8:test
[INFO] |  |  +- (org.springframework.boot:spring-boot:jar:2.6.8:test - omitted for duplicate)
[INFO] |  |  +- (org.springframework.boot:spring-boot-test:jar:2.6.8:test - omitted for duplicate)
[INFO] |  |  \- (org.springframework.boot:spring-boot-autoconfigure:jar:2.6.8:test - omitted for duplicate)
[INFO] |  +- com.jayway.jsonpath:json-path:jar:2.6.0:test
[INFO] |  |  +- net.minidev:json-smart:jar:2.4.8:test (version managed from 2.4.7)
[INFO] |  |  |  \- net.minidev:accessors-smart:jar:2.4.8:test
[INFO] |  |  |     \- (org.ow2.asm:asm:jar:9.1:test - omitted for conflict with 7.1)
[INFO] |  |  \- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.30; scope updated from test; omitted for duplicate)
[INFO] |  +- (jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:compile - scope updated from test; omitted for duplicate)
[INFO] |  +- org.assertj:assertj-core:jar:3.21.0:test
[INFO] |  +- org.hamcrest:hamcrest:jar:2.2:test
[INFO] |  +- org.junit.jupiter:junit-jupiter:jar:5.8.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-api:jar:5.8.2:test
[INFO] |  |  |  +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] |  |  |  +- org.junit.platform:junit-platform-commons:jar:1.8.2:test
[INFO] |  |  |  |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-params:jar:5.8.2:test
[INFO] |  |  |  +- (org.junit.jupiter:junit-jupiter-api:jar:5.8.2:test - omitted for duplicate)
[INFO] |  |  |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  |  \- org.junit.jupiter:junit-jupiter-engine:jar:5.8.2:test
[INFO] |  |     +- org.junit.platform:junit-platform-engine:jar:1.8.2:test
[INFO] |  |     |  +- (org.opentest4j:opentest4j:jar:1.2.0:test - omitted for duplicate)
[INFO] |  |     |  +- (org.junit.platform:junit-platform-commons:jar:1.8.2:test - omitted for duplicate)
[INFO] |  |     |  \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  |     +- (org.junit.jupiter:junit-jupiter-api:jar:5.8.2:test - omitted for duplicate)
[INFO] |  |     \- (org.apiguardian:apiguardian-api:jar:1.1.2:test - omitted for duplicate)
[INFO] |  +- org.mockito:mockito-core:jar:4.0.0:test
[INFO] |  |  +- net.bytebuddy:byte-buddy:jar:1.11.22:test (version managed from 1.11.19)
[INFO] |  |  +- net.bytebuddy:byte-buddy-agent:jar:1.11.22:test (version managed from 1.11.19)
[INFO] |  |  \- org.objenesis:objenesis:jar:3.2:test
[INFO] |  +- org.mockito:mockito-junit-jupiter:jar:4.0.0:test
[INFO] |  |  +- (org.mockito:mockito-core:jar:4.0.0:test - omitted for duplicate)
[INFO] |  |  \- (org.junit.jupiter:junit-jupiter-api:jar:5.8.2:test - version managed from 5.8.1; omitted for duplicate)
[INFO] |  +- org.skyscreamer:jsonassert:jar:1.5.0:test
[INFO] |  |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] |  +- (org.springframework:spring-core:jar:5.3.20:compile - scope updated from test; omitted for duplicate)
[INFO] |  +- org.springframework:spring-test:jar:5.3.20:test
[INFO] |  |  \- (org.springframework:spring-core:jar:5.3.20:test - omitted for duplicate)
[INFO] |  \- org.xmlunit:xmlunit-core:jar:2.8.4:test
[INFO] |     \- (jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:test - omitted for duplicate)
[INFO] +- junit:junit:jar:4.13.2:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:2.2:test (version managed from 1.3)
[INFO] |     \- (org.hamcrest:hamcrest:jar:2.2:test - omitted for duplicate)
[INFO] +- org.springframework.boot:spring-boot-starter-json:jar:2.6.8:compile
[INFO] |  +- (org.springframework.boot:spring-boot-starter:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-web:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.3:compile
[INFO] |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile
[INFO] |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.13.3:compile
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile - omitted for duplicate)
[INFO] |  |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile - omitted for duplicate)
[INFO] |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.3:compile
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.13.3:compile - omitted for duplicate)
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile - omitted for duplicate)
[INFO] |  |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile - omitted for duplicate)
[INFO] |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.13.3:compile
[INFO] |     +- (com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile - omitted for duplicate)
[INFO] |     \- (com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile - omitted for duplicate)
[INFO] +- org.projectlombok:lombok:jar:1.18.24:compile
[INFO] +- com.github.oshi:oshi-core:jar:6.4.0:compile
[INFO] |  +- net.java.dev.jna:jna:jar:5.12.1:compile
[INFO] |  +- net.java.dev.jna:jna-platform:jar:5.12.1:compile
[INFO] |  |  \- (net.java.dev.jna:jna:jar:5.12.1:compile - omitted for duplicate)
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.36:compile
[INFO] +- io.micrometer:micrometer-registry-prometheus:jar:1.8.6:compile
[INFO] |  +- (io.micrometer:micrometer-core:jar:1.8.6:compile - omitted for duplicate)
[INFO] |  \- io.prometheus:simpleclient_common:jar:0.12.0:compile
[INFO] |     \- io.prometheus:simpleclient:jar:0.12.0:compile
[INFO] |        +- io.prometheus:simpleclient_tracer_otel:jar:0.12.0:compile
[INFO] |        |  \- io.prometheus:simpleclient_tracer_common:jar:0.12.0:compile
[INFO] |        \- io.prometheus:simpleclient_tracer_otel_agent:jar:0.12.0:compile
[INFO] |           \- (io.prometheus:simpleclient_tracer_common:jar:0.12.0:compile - omitted for duplicate)
[INFO] +- com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:jar:2021.0.4.0:compile
[INFO] |  +- com.alibaba.cloud:spring-cloud-alibaba-commons:jar:2021.0.4.0:compile
[INFO] |  +- com.alibaba.nacos:nacos-client:jar:2.0.4:compile
[INFO] |  |  +- commons-codec:commons-codec:jar:1.15:compile (version managed from 1.11)
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-core:jar:2.13.3:compile - version managed from 2.12.2; omitted for duplicate)
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile - version managed from 2.12.2; omitted for duplicate)
[INFO] |  |  +- org.apache.httpcomponents:httpasyncclient:jar:4.1.5:compile (version managed from 4.1.3)
[INFO] |  |  |  +- org.apache.httpcomponents:httpcore:jar:4.4.15:compile
[INFO] |  |  |  +- org.apache.httpcomponents:httpcore-nio:jar:4.4.15:compile
[INFO] |  |  |  |  \- (org.apache.httpcomponents:httpcore:jar:4.4.15:compile - omitted for duplicate)
[INFO] |  |  |  \- org.apache.httpcomponents:httpclient:jar:4.5.13:compile
[INFO] |  |  |     +- (org.apache.httpcomponents:httpcore:jar:4.4.15:compile - version managed from 4.4.13; omitted for duplicate)
[INFO] |  |  |     \- (commons-codec:commons-codec:jar:1.15:compile - version managed from 1.11; omitted for duplicate)
[INFO] |  |  +- org.reflections:reflections:jar:0.9.11:compile
[INFO] |  |  |  +- com.google.guava:guava:jar:20.0:compile
[INFO] |  |  |  \- org.javassist:javassist:jar:3.21.0-GA:compile
[INFO] |  |  +- (io.prometheus:simpleclient:jar:0.12.0:compile - version managed from 0.5.0; omitted for duplicate)
[INFO] |  |  \- (org.yaml:snakeyaml:jar:1.29:compile - version managed from 1.23; omitted for duplicate)
[INFO] |  +- com.alibaba.spring:spring-context-support:jar:1.0.11:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-commons:jar:3.1.7:compile (version managed from 3.1.4)
[INFO] |  |  \- org.springframework.security:spring-security-crypto:jar:5.6.5:compile (version managed from 5.6.10)
[INFO] |  \- org.springframework.cloud:spring-cloud-context:jar:3.1.7:compile (version managed from 3.1.4)
[INFO] |     \- (org.springframework.security:spring-security-crypto:jar:5.6.5:compile - version managed from 5.6.10; omitted for duplicate)
[INFO] +- org.springframework.cloud:spring-cloud-openfeign-core:jar:3.1.8:compile
[INFO] |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.6.8:compile
[INFO] |  |  \- (org.springframework.boot:spring-boot:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  +- org.springframework.boot:spring-boot-starter-aop:jar:2.6.8:compile (version managed from 2.6.15)
[INFO] |  |  +- (org.springframework.boot:spring-boot-starter:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  |  +- (org.springframework:spring-aop:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |  \- org.aspectj:aspectjweaver:jar:1.9.7:compile
[INFO] |  +- io.github.openfeign.form:feign-form-spring:jar:3.8.0:compile
[INFO] |  |  +- io.github.openfeign.form:feign-form:jar:3.8.0:compile
[INFO] |  |  |  \- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.26; omitted for duplicate)
[INFO] |  |  +- (org.springframework:spring-web:jar:5.3.20:compile - version managed from 5.1.5.RELEASE; omitted for duplicate)
[INFO] |  |  \- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.26; omitted for duplicate)
[INFO] |  \- commons-fileupload:commons-fileupload:jar:1.5:compile
[INFO] |     \- commons-io:commons-io:jar:2.11.0:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-loadbalancer:jar:3.1.7:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-starter:jar:3.1.7:compile
[INFO] |  |  +- (org.springframework.boot:spring-boot-starter:jar:2.6.8:compile - version managed from 2.6.15; omitted for duplicate)
[INFO] |  |  +- (org.springframework.cloud:spring-cloud-context:jar:3.1.7:compile - version managed from 3.1.4; omitted for duplicate)
[INFO] |  |  +- (org.springframework.cloud:spring-cloud-commons:jar:3.1.7:compile - version managed from 3.1.4; omitted for duplicate)
[INFO] |  |  \- org.springframework.security:spring-security-rsa:jar:1.0.11.RELEASE:compile
[INFO] |  |     \- org.bouncycastle:bcpkix-jdk15on:jar:1.69:compile
[INFO] |  |        +- org.bouncycastle:bcprov-jdk15on:jar:1.69:compile
[INFO] |  |        \- org.bouncycastle:bcutil-jdk15on:jar:1.69:compile
[INFO] |  |           \- (org.bouncycastle:bcprov-jdk15on:jar:1.69:compile - omitted for duplicate)
[INFO] |  +- org.springframework.cloud:spring-cloud-loadbalancer:jar:3.1.7:compile
[INFO] |  |  +- (org.springframework.cloud:spring-cloud-commons:jar:3.1.7:compile - version managed from 3.1.4; omitted for duplicate)
[INFO] |  |  +- (org.springframework.cloud:spring-cloud-context:jar:3.1.7:compile - version managed from 3.1.4; omitted for duplicate)
[INFO] |  |  +- io.projectreactor:reactor-core:jar:3.4.18:compile (version managed from 3.4.29)
[INFO] |  |  |  \- org.reactivestreams:reactive-streams:jar:1.0.3:compile
[INFO] |  |  \- io.projectreactor.addons:reactor-extra:jar:3.4.8:compile (version managed from 3.4.10)
[INFO] |  |     \- (io.projectreactor:reactor-core:jar:3.4.18:compile - version managed from 3.4.17; omitted for duplicate)
[INFO] |  +- org.springframework.boot:spring-boot-starter-cache:jar:2.6.8:compile (version managed from 2.6.15)
[INFO] |  |  +- (org.springframework.boot:spring-boot-starter:jar:2.6.8:compile - version managed from 2.6.15; omitted for duplicate)
[INFO] |  |  \- org.springframework:spring-context-support:jar:5.3.20:compile
[INFO] |  |     +- (org.springframework:spring-beans:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |     +- (org.springframework:spring-context:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |     \- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  \- com.stoyanr:evictor:jar:1.0.0:compile
[INFO] +- com.alibaba:druid-spring-boot-starter:jar:1.2.21:compile
[INFO] |  +- com.alibaba:druid:jar:1.2.21:compile
[INFO] |  +- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.26; omitted for duplicate)
[INFO] |  +- (org.springframework.boot:spring-boot-autoconfigure:jar:2.6.8:compile - version managed from 2.7.9; omitted for duplicate)
[INFO] |  \- org.glassfish.jaxb:jaxb-runtime:jar:2.3.6:compile (version managed from 2.3.2)
[INFO] |     +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:compile
[INFO] |     +- org.glassfish.jaxb:txw2:jar:2.3.6:compile
[INFO] |     +- com.sun.istack:istack-commons-runtime:jar:3.0.12:compile
[INFO] |     \- com.sun.activation:jakarta.activation:jar:1.2.2:runtime
[INFO] +- org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:2.3.1:compile
[INFO] |  +- (org.springframework.boot:spring-boot-starter:jar:2.6.8:compile - version managed from 2.7.12; omitted for duplicate)
[INFO] |  +- org.springframework.boot:spring-boot-starter-jdbc:jar:2.6.8:compile (version managed from 2.7.12)
[INFO] |  |  +- (org.springframework.boot:spring-boot-starter:jar:2.6.8:compile - version managed from 2.7.12; omitted for duplicate)
[INFO] |  |  +- com.zaxxer:HikariCP:jar:4.0.3:compile
[INFO] |  |  |  \- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 2.0.0-alpha1; omitted for duplicate)
[INFO] |  |  \- org.springframework:spring-jdbc:jar:5.3.20:compile
[INFO] |  |     +- (org.springframework:spring-beans:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |     +- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |     \- org.springframework:spring-tx:jar:5.3.20:compile
[INFO] |  |        +- (org.springframework:spring-beans:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  |        \- (org.springframework:spring-core:jar:5.3.20:compile - omitted for duplicate)
[INFO] |  +- org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:2.3.1:compile
[INFO] |  |  \- (org.springframework.boot:spring-boot-autoconfigure:jar:2.6.8:compile - version managed from 2.7.12; omitted for duplicate)
[INFO] |  +- org.mybatis:mybatis:jar:3.5.13:compile
[INFO] |  \- org.mybatis:mybatis-spring:jar:2.1.1:compile
[INFO] +- org.xerial:sqlite-jdbc:jar:3.42.0.0:compile
[INFO] +- com.zxx.study.common:1-common:jar:1.0.0-SNAPSHOT:compile
[INFO] |  +- (org.springframework.boot:spring-boot-starter-web:jar:2.6.8:compile - omitted for duplicate)
[INFO] |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.6.8:compile
[INFO] |  |  +- ch.qos.logback:logback-classic:jar:1.2.11:compile
[INFO] |  |  |  +- ch.qos.logback:logback-core:jar:1.2.11:compile
[INFO] |  |  |  \- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.32; omitted for duplicate)
[INFO] |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.2:compile
[INFO] |  |  |  +- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.35; omitted for duplicate)
[INFO] |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile
[INFO] |  |  \- org.slf4j:jul-to-slf4j:jar:1.7.36:compile
[INFO] |  |     \- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.35; omitted for duplicate)
[INFO] |  +- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.35; omitted for duplicate)
[INFO] |  +- (com.fasterxml.jackson.core:jackson-databind:jar:2.13.3:compile - version managed from 2.12.2; omitted for duplicate)
[INFO] |  +- (org.projectlombok:lombok:jar:1.18.24:compile - omitted for duplicate)
[INFO] |  +- cglib:cglib:jar:3.3.0:compile
[INFO] |  |  \- org.ow2.asm:asm:jar:7.1:compile
[INFO] |  +- jakarta.validation:jakarta.validation-api:jar:2.0.2:compile
[INFO] |  +- org.apache.commons:commons-lang3:jar:3.12.0:compile
[INFO] |  \- (net.java.dev.jna:jna:jar:5.12.1:compile - omitted for duplicate)
[INFO] \- com.zxx.study.api:2-common-api:jar:1.0.0-SNAPSHOT:compile
[INFO]    +- (com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:jar:2021.0.4.0:compile - omitted for duplicate)
[INFO]    +- org.springframework.cloud:spring-cloud-starter-openfeign:jar:3.1.8:compile
[INFO]    |  +- (org.springframework.cloud:spring-cloud-starter:jar:3.1.7:compile - omitted for duplicate)
[INFO]    |  +- (org.springframework.cloud:spring-cloud-openfeign-core:jar:3.1.8:compile - omitted for duplicate)
[INFO]    |  +- (org.springframework:spring-web:jar:5.3.20:compile - version managed from 5.3.27; omitted for duplicate)
[INFO]    |  +- (org.springframework.cloud:spring-cloud-commons:jar:3.1.7:compile - version managed from 3.1.4; omitted for duplicate)
[INFO]    |  +- io.github.openfeign:feign-core:jar:11.10:compile
[INFO]    |  \- io.github.openfeign:feign-slf4j:jar:11.10:compile
[INFO]    |     +- (io.github.openfeign:feign-core:jar:11.10:compile - omitted for duplicate)
[INFO]    |     \- (org.slf4j:slf4j-api:jar:1.7.36:compile - version managed from 1.7.35; omitted for duplicate)
[INFO]    \- (com.zxx.study.common:1-common:jar:1.0.0-SNAPSHOT:compile - omitted for duplicate)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  7.831 s
[INFO] Finished at: 2025-03-26T08:46:23+08:00
[INFO] ------------------------------------------------------------------------

 其中 omitted for duplicate 表示有 jar 包被重复依赖,最后写着 omitted for conflict with xxx 的,说明和别的 jar 包版本冲突了,而该行的 jar 包不会被引入。

分析依赖冲突/打印未使用依赖包:mvn dependency:analyze

D:\project\javaSummary\zcloud\4-springboot>mvn dependency:analyze
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< com.zxx.study.boot:4-springboot >-------------------
[INFO] Building 4-springboot 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> maven-dependency-plugin:2.8:analyze (default-cli) > test-compile @ 4-springboot >>>
[INFO]
[INFO] --- spring-boot-maven-plugin:2.6.8:build-info (default) @ 4-springboot ---
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ 4-springboot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.11.0:compile (default-compile) @ 4-springboot ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ 4-springboot ---
[INFO] Not copying test resources
[INFO]
[INFO] --- maven-compiler-plugin:3.11.0:testCompile (default-testCompile) @ 4-springboot ---
[INFO] Not compiling test sources
[INFO]
[INFO] <<< maven-dependency-plugin:2.8:analyze (default-cli) < test-compile @ 4-springboot <<<
[INFO]
[INFO]
[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ 4-springboot ---
[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2
Unable to process: com.zxx.study.boot.common.bean.dto.TUserDto
Unable to process: com.zxx.study.boot.common.pool.CustomRejectedExecutionHandler
Unable to process: com.zxx.study.boot.web.AppMain
Unable to process: com.zxx.study.boot.web.config.ThreadPoolConfig$CustomThreadFactory
Unable to process: com.zxx.study.boot.web.config.ThreadPoolConfig$MdcTaskDecorator
Unable to process: com.zxx.study.boot.web.config.ThreadPoolConfig4Actuator
Unable to process: com.zxx.study.boot.web.controller.ThreadPoolController
[WARNING] Used undeclared dependencies found:
[WARNING]    org.slf4j:slf4j-api:jar:1.7.36:compile
[WARNING]    org.springframework.boot:spring-boot:jar:2.6.8:compile
[WARNING]    org.springframework:spring-beans:jar:5.3.20:compile
[WARNING]    org.springframework:spring-context:jar:5.3.20:compile
[WARNING]    org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.63:compile
[WARNING]    org.springframework:spring-web:jar:5.3.20:compile
[WARNING]    org.springframework.boot:spring-boot-actuator:jar:2.6.8:compile
[WARNING]    com.alibaba:druid:jar:1.2.21:compile
[WARNING] Unused declared dependencies found:
[WARNING]    org.springframework.boot:spring-boot-starter-web:jar:2.6.8:compile
[WARNING]    org.springframework.boot:spring-boot-starter-actuator:jar:2.6.8:compile
[WARNING]    org.springframework.boot:spring-boot-starter-test:jar:2.6.8:test
[WARNING]    junit:junit:jar:4.13.2:test
[WARNING]    org.springframework.boot:spring-boot-starter-json:jar:2.6.8:compile
[WARNING]    org.projectlombok:lombok:jar:1.18.24:compile
[WARNING]    com.github.oshi:oshi-core:jar:6.4.0:compile
[WARNING]    io.micrometer:micrometer-registry-prometheus:jar:1.8.6:compile
[WARNING]    com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:jar:2021.0.4.0:compile
[WARNING]    org.springframework.cloud:spring-cloud-openfeign-core:jar:3.1.8:compile
[WARNING]    org.springframework.cloud:spring-cloud-starter-loadbalancer:jar:3.1.7:compile
[WARNING]    com.alibaba:druid-spring-boot-starter:jar:1.2.21:compile
[WARNING]    org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:2.3.1:compile
[WARNING]    org.xerial:sqlite-jdbc:jar:3.42.0.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  10.256 s
[INFO] Finished at: 2025-03-26T08:52:54+08:00
[INFO] ------------------------------------------------------------------------

如果是 idea,可以安装 maven helper 插件来检查依赖冲突.

maven helper 插件安装成功,点开 pom.xml 会发现多了一个 Dependency Analyzer 视图,如下

其次是依赖排除,这两张图显示.

  • Conflicts 显示重复依赖
  • All Dependencies as List 集合形式显示所有依赖
  • All Dependencies as Tree树形式显示所有依赖

利用插件排除依赖

maven包冲突
maven采用“最近获胜策略(nearest wins strategy)”的方式处理依赖冲突,即如果一个项目最终依赖于相同artifact的多个版本,在依赖树中离项目最近的那个版本将被使用。
解决方法一:
当冲突时把需要依赖的包重新定义在最外层依赖关系中,即在pom.xml文件中直接加上依赖。

解决方法二:
在resolve-web项目对project-A的dependency声明中,将project-common排除掉。在resolve-web的pom.xml文件中修改对project-A的dependency声明:

<dependency> 
<groupId>project-A</groupId> 
<artifactId>project-A</artifactId> 
<version>1.0</version> 
<exclusions> 
<exclusion> 
<groupId>project-common</groupId> 
<artifactId>project-commmon</artifactId> 
</exclusion> 
</exclusions> 
</dependency>

科普文:一文搞懂Maven【依赖和依赖冲突】-CSDN博客

示例:依赖冲突

随着maven项目不断推进,开发人员难免会遇到这样一个问题,在添加新的依赖jar包后,会发现和原有的项目依赖产生冲突(多数情况是由于依赖传递引起的),这个时候就需要我们根据实际情况来选择生效的最终依赖。

 

下面将以上面的例子来对如何解决依赖冲突进行讲解

方法一:使用maven提供的传递依赖原则

(一)第一声明者优先原则

其实所谓第一声明者,就是在pom文件中,优先使用书写顺序排在前面的依赖包,也就是谁先声明,就先用谁的依赖。
如果我们想在我们的项目中使用5.0.2版本的spring-bean包的话,只需要调整一下依赖的顺序即可。

(二)路径者优先原则

路径者优先原则也很好理解,如果有两个依赖版本冲突了,那么就显式地在pom文件中把要使用的依赖添加上去。

这种方法虽然简单直接,但是只适合于项目依赖的jar包比较少的场景,一旦管理的依赖数量达到一定数量,简单的调整依赖的顺序并不能解决实际冲突问题。
在实际开发中很少应用到。

方法二:排除依赖(有时候会用到)

排除依赖的思路也很简单,如果有两个依赖的版本发生了冲突,那么只要把其中一个依赖给排除掉,只剩下一个依赖,那么自然就可以解决冲突的问题。
我们只需要使用exclusion关键字对相关依赖进行排除就行

方法三:版本锁定(最常用,推荐使用)

对于版本冲突的问题,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。

这里要注意两点,版本锁定和使用路径优先原则不同,使用路径优先原则,是实实在在地将jar包给引入到pom文件中,而版本锁定只是规定了要使用的版本号,只有真实用到了相关的依赖,才生效。同时,版本锁定可以更集中地约束和规定依赖版本,这种优势是其他方法所不能达到的。