一.maven依赖传递
1.什么是依赖传递
在maven中,依赖是可以传递的,假设存在三个项目,分别是项目A,项目B以及项目C。假设C依赖B,B依赖A,那么我们可以根据maven项目依赖的特征不难推出项目C也依赖A。
2.什么依赖依赖冲突 ,如何解决依赖冲突?
2.1什么是依赖冲突
例如: 由于依赖传递现象的存在, spring-webmvc 依赖 spirng-beans-5.1.5,spring-aop 依赖 spring-beans-5.1.6,但是发现 spirng-beans-5.1.5 加入到了工程中,而我们希望 spring-beans-5.1.6 加入工程。这就造成了依赖冲突。
2.2如何解决依赖冲突
1.使用maven提供的依赖调解原则
第一声明者优先原则(直接声明依赖,依赖大于依赖传递)
路径近者优先原则(在pom 文件中定义依赖,以先声明的依赖为准)
2.排除依赖(使用exclusions标签将传递过来的依赖排除出去)
3.锁定版本(指定某个版本)
3.properties标签的使用
|
<properties> <spring.version>5.1.5.RELEASE</spring.version> <springmvc.version>5.1.5.RELEASE</springmvc.version> <mybatis.version>3.5.1</mybatis.version> </properties> <!--锁定jar版本--> <dependencyManagement> <dependencies> <!-- Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- springMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${springmvc.version}</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </dependencyManagement> |
4.maven工程的继承
在Java语言中,类之间是可以继承的,通过继承,子类就可以引用父类中非private的属性和方法。同样,在maven工程之间也可以继承,子工程继承父工程后,就可以使用在父工程中引入的依赖。继承的目的是为了消除重复代码.。

5.maven工程的聚合
在maven工程的pom.xml文件中可以使用标签将其他maven工程聚合到一起,聚合的目的是为了进行统一操作。
例如:拆分后的maven工程有多个,如果要进行打包,就需要针对每个工程分别执行打包命令,操作起来非常繁琐。这时就可以使用标签将这些工程统一聚合到maven父工程中,需要打包的时候,只需要在此工程中执行一次打包命令,其下被聚合的工程就都会被打包了。
|
<groupId>com.yang</groupId> <artifactId> yang_edu_home_parent</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>ssm-utils</module> <module>ssm-domain</module> <module>ssm-dao</module> <module>ssm-service</module> <module>ssm-web</module> </modules> |
本文详细介绍了Maven的依赖传递原理,当项目依赖关系复杂时可能出现的依赖冲突及其解决方案,包括依赖调解原则、排除依赖和锁定版本。此外,还讲解了如何使用`<properties>`标签来统一管理版本号,以及Maven工程的继承和聚合特性,以实现代码复用和简化构建过程。

被折叠的 条评论
为什么被折叠?



