- Maven项目的依赖传递
有三个项目:ABC
A
|
B
|
C
B是依赖A的,C又是依赖B的,所以依赖传递,C也是依赖A的
A B 项目大成jar包到本地仓库中:
clean package(打成jar包) install(jar包安装到本地仓库)
clean compile(编译)
pom.xml文件中的依赖配置
B是依赖A的,在B的pom.xml文件中写入A的坐标
<dependency>
<groupId>com.A</groupId>
<artifactId>A-model</artifactId>
<version>0.0.1-SNAPSNOTL</version>
</dependency>
------------------------------------
C是依赖B的,在C的pom.xml文件中写入B的坐标
<dependency>
<groupId>com.B</groupId>
<artifactId>B-model</artifactId>
<version>0.0.1-SNAPSNOTL</version>
</dependency>
--A、B、C项目各自打包、编译,在C的项目的Maven dependencies引入中不仅会引入B,而且还会引入A项目,这就是依赖的传递。
--如果项目C只想依赖B,不想依赖A怎么办?
排除依赖:exclusions
<exclusions>
<exclusion>
<groupId>com.A</groupId>
<artifactId>A-model</artifactId>
<version>0.0.1-SNAPSNOTL</version>
<exclusion>
<exclusions>
这样在C项目编译后compile,就排出对A的依赖
- Maven依赖冲突
在传递依赖的原则下,A->B->C->X(jar) 路线1
A->D->X(jar) 路线2
--原则1:短路优先,如果A需要导入一个依赖X,在路径中选择最短的。
在传递依赖的原则下,A->B->X(jar) 路线1
A->C->X(jar) 路线2
--原则2:在路径相同时,先声明先优先。如果A需要导入一个依赖X,1、2路线相同,在A中的pom.xml先声明B(C),就引入B(C)的X(jar)。
- Maven项目的聚合
在D项目中聚合 ABC三个项目
D的pom.xml文件
更改<package>pom</package>
...
<modules>
<module>../模块名</module>
<module>../模块名</module>
<module>../模块名</module>
</moules>
时间: 2024-09-23 06:05:00