Maven3-jar包冲突及创建SSM项目

一、jar包冲突

这种添加没有任何意义,不叫jar包冲突,在前的不起作用,在后的起作用,后面会覆盖前面,这不是jar包冲突这是你的问题

image-20201005234242449

我们指的jar包冲突是两个包同时依赖同一种第三方jar包,而依赖的版本不同会产生冲突,这种叫jar包冲突

image-20201005234506065

举个栗子

1.1 第一声明优先

我们假设这是两个不用框架的依赖包,依赖同一jar包spring-beans

image-20201005235239062

两个jar包都依赖同一jar包(版本不同),依赖的层级相同,依赖包的版本由声明在前的jar包决定

image-20201005235150911

前后顺序一换,就是4.2.1生效

1.2 最短路径优先

两个jar包都依赖同一jar包(版本不同),依赖的层级不同,依赖层次关系越少,优先级越高

举个栗子,下面两个jar包都依赖spring-beans,而直接写一个spring-beans的依赖版本上去,那么肯定是直接写的这个生效

image-20201005235936098

springBoot用的都是高版本,我就想用低版本,那么我就像上面那样直接写一个低版本的上去,最终引用的就是写的这个低版本的jar包

1.3 指定依赖排除

排除当前jar包依赖的jar包,如下为排除context5.2.9依赖的beans,让它去依赖其它版本的beans

image-20201006000820873

1.4 版本锁定

在dependencies上面再添加一层dependencyManagment,来锁定依赖版本

image-20201006001416800

注意dependencyManagment只是控制版本的,不会真正的添加依赖

如下把所有的dependencies都注释掉,只留下dependencyManagment,结果jar包就一个都没有了

image-20201006001832469

最终决定怎么解决jar包冲突,固定选择其中一种就好,我更倾向于版本锁定

二、Maven创建SSM项目

2.1 pom.xml

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<srping.version>4.2.1.RELEASE</srping.version>
		<mybatis.version>3.3.0</mybatis.version>
		<slf4j.version>1.7.12</slf4j.version>
		<log4j.version>1.2.17</log4j.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.apache.openejb</groupId>
			<artifactId>javaee-api</artifactId>
			<version>5.0-1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- 单元测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<!-- 表示开发的时候引入,发布的时候不会加载此包 -->
			<scope>test</scope>
		</dependency>
		<!-- spring框架包 start -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<!-- spring框架包 end -->
		<!-- mybatis框架包 start -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.2</version>
		</dependency>
		<!-- mybatis框架包 end -->
		<!-- 数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.35</version>
		</dependency>
		<!-- C3P0 -->
		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>

	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>

通过配置properties来控制spring的唯一版本号,避免jar包冲突,再者改的时候也很方便,改spring的版本号即可

image-20201006004158101 image-20201006004403831

2.2 移除重包

一个一个找,一个一个移除

image-20201006004546835

在dependencies中移除重包

image-20201006004700805

实际依赖的所有jar包有这么多

image-20201006005223138

而删完重包添加的jar包只有这么多

image-20201006005252552

2.3 把之前的项目文件拷贝到对应位置即可

image-20201006010249094image-20201006010418203

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值