概叙
科普文:一文搞懂Maven【JDK、Maven、Spring Boot、Spring Cloud版本对应关系详解】-CSDN博客
科普文:一文搞懂Maven【打包插件:maven-assembly-plugin插件 】-CSDN博客
前面梳理了maven基本概念、依赖、依赖传递、依赖冲突和解决版本、以及打包插件。这里我们继续看看两个常用的依赖分析命令:mvn dependency:tree、mvn dependency:analyze。
这两个命令是通过Maven插件如maven-dependency-plugin和versions-maven-plugin来自动化依赖管理和仲裁。
- 分析依赖冲突/打印未使用依赖包:mvn dependency:analyze
- 打印依赖树/检查依赖冲突:mvn dependency:tree
- 使用最新版本的依赖: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项目不断推进,开发人员难免会遇到这样一个问题,在添加新的依赖jar包后,会发现和原有的项目依赖产生冲突(多数情况是由于依赖传递引起的),这个时候就需要我们根据实际情况来选择生效的最终依赖。
下面将以上面的例子来对如何解决依赖冲突进行讲解
方法一:使用maven提供的传递依赖原则
(一)第一声明者优先原则
其实所谓第一声明者,就是在pom文件中,优先使用书写顺序排在前面的依赖包,也就是谁先声明,就先用谁的依赖。
如果我们想在我们的项目中使用5.0.2版本的spring-bean包的话,只需要调整一下依赖的顺序即可。
(二)路径者优先原则
路径者优先原则也很好理解,如果有两个依赖版本冲突了,那么就显式地在pom文件中把要使用的依赖添加上去。
这种方法虽然简单直接,但是只适合于项目依赖的jar包比较少的场景,一旦管理的依赖数量达到一定数量,简单的调整依赖的顺序并不能解决实际冲突问题。
在实际开发中很少应用到。
方法二:排除依赖(有时候会用到)
排除依赖的思路也很简单,如果有两个依赖的版本发生了冲突,那么只要把其中一个依赖给排除掉,只剩下一个依赖,那么自然就可以解决冲突的问题。
我们只需要使用exclusion关键字对相关依赖进行排除就行
方法三:版本锁定(最常用,推荐使用)
对于版本冲突的问题,我们最常使用的解决方式,是使用dependencyManagement统一对依赖的版本进行定义。这样的话,导入依赖的时候就会直接使用我们锁定的依赖版本。
这里要注意两点,版本锁定和使用路径优先原则不同,使用路径优先原则,是实实在在地将jar包给引入到pom文件中,而版本锁定只是规定了要使用的版本号,只有真实用到了相关的依赖,才生效。同时,版本锁定可以更集中地约束和规定依赖版本,这种优势是其他方法所不能达到的。