8 项目统一相同依赖/插件的版本号

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>

在父工程声明,在子工程继承,如子工程不继承该依赖,该依赖是不会下载到子工程中

推荐阅读更多精彩内容