1 为什么要统一依赖与插件
- 项目依赖结构如下
A ->
C-1.0
A ->
B-1.0 ->
C-2.0
项目A依赖项目B-1.0与项目C-1.0,项目B-1.0依赖项目C-2.0,此时对项目A进行打包,按照Maven的就近原则,A.jar中只会存在C-1.0.jar,调用只存在项目C-2.0中的方法或类时,就会出现典型的XXX not found问题(插件同理)
2 如何统一依赖
- 新建父工程将各个模块/项目聚合起来
- 依据<dependencyManagement>标签与<pluginManagement>标签的特性,将项目中所有依赖/插件都放入标签中
- 子工程需要某个依赖/插件时,只需在子工程的pom中声明groupId和artifactId即可,无需要声明version版本号(全部放在父工程中统一声明),强制约束所有子工程的相同依赖的版本一致
3 项目中使用
父工程
<dependencyManagement>
<!--定时任务-->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
</dependencyManagement>
---------------------------------------------------------------------------------------------------------
子工程
<dependencies>
<!--定时任务-->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
</dependencies>
在父工程声明,在子工程继承,如子工程不继承该依赖,该依赖是不会下载到子工程中
网友评论