maven依赖与依赖不同版本处理 前言总结具体步骤1. 如何判断呢2. 在pom.xml配置3. 实现原理 相关错误参考资料
前言
maven不仅仅管理依赖的工具, 本问题是以管理依赖方面予以叙述. 本文是以eclipse作为ide配置的.
总结 判断是否冲突添加依赖关系,排除不需要的依赖注意:
依赖问题很复杂, 如果排除不干净就会运行不起来, 或者一下跑起来,一下跑不起来的神坑, 望不要再紧要关头掉进去. 具体步骤 1. 如何判断呢
打开pom.xml,如下图
a.表示打开的pom.xml文件
b.依赖选项卡
c.我们添加的依赖
打开Dependency Hierarchy选项卡
a.表示打开的pom.xml文件
b.依赖关系层次结构选项卡
c.在这里就可以看见, 所引入的依赖,的依赖关系, 其中有版本号.
d.右边的窗口是所有的依赖, 从这里可以很方便的查看是否有版本号不一致.
在pom.xml配置中对依赖以exclusions进行排除:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId><exclusions><!--Spring-boot中去掉logback的依赖 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency>完整如下
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.0.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>spring-boot-mybitis-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>spring-boot-mybitis-demo</name><description>Demo project for Spring Boot</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><!-- 测试 --><testng.version>6.14.2</testng.version><reportng.version>1.1.4</reportng.version><testng.xmlFileName>src/test/resources/test/testng-suite.xml</testng.xmlFileName><testng.xmlFileUtilSuite>src/test/resources/test/util-suite.xml</testng.xmlFileUtilSuite><!-- 日志: log4j --><slf4j-api-version>1.7.28</slf4j-api-version><log4j.version>2.12.1</log4j.version><!-- 数据源 --><druid>1.1.20</druid></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId><exclusions><!--Spring-boot中去掉logback的依赖 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><!--Spring-boot中去掉logback的依赖 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency> </dependencies></project> 3. 实现原理只是maven排除, 没什么原理, 自己看maven源代码或只取理解下思想.
相关错误 依赖问题很复杂, 如果排除不干净就会运行不起来, 或者一下跑起来,一下跑不起来的神坑. 参考资料 依赖和版本冲突排查(待补充)