之前一段时间,我和在其他公司工作的同行朋友聊天时无意间聊到项目依赖问题,发现很多公司(包括我们公司)都是有自己一个统一的父工程,而这个工程没有任何的逻辑代码,说起来只有一个 pom.xml 文件,而这个pom文件就是统一管理项目的依赖使用的。下面简单记录一下如何创建这样一个父工程来统一管理项目依赖。

1.创建一个纯Maven项目

选择 maven ,然后直接 Next Next , Finish
Maven父工程(统一管理依赖)_学习

2.删除Src目录

因为父工程我们用来统一管理依赖,不需要写任何的逻辑业务,所以src目录我们用不上,是可以直接删除的(自己愿意也可以留着)
Maven父工程(统一管理依赖)_学习_02

3.修改pom.xml文件

按照下面的步骤添加需要使用到的依赖,并统一管理版本号

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.magic</groupId>
  <artifactId>parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--1.修改打包方式-->
  <packaging>pom</packaging>
  <!--2.此标签内定义版本号-->
  <properties>
    <junit.version>4.12</junit.version>
  </properties>
  <!--3.依赖管理-->
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>
4.创建子模块 

  在父工程目录下new一个子模块,该子模块将会自动引入父工程pom文件。
Maven父工程(统一管理依赖)_学习_03
  父项目中我们可能引入了10个依赖,但是子模块中我们可能只会用到其中3个,那在子模块中我们想使用哪个依赖,还是需要引入一下,但是引入的依赖将会从父工程中引入。如下图所示:我在父工程中将Junit的版本号修改一下,然后子模块的依赖版本号也相应的进行了调整,说明子模块引用了父工程的依赖。
Maven父工程(统一管理依赖)_学习_04
  如果我们在这个父工程下面创建了6个子模块,当我们需要修改依赖的版本号的时候,直接修改父工程中的依赖版本号,相当于修改了6个子模块中的依赖版本号,这就是统一管理。避免依赖重复引入,出现依赖版本问题,并且依赖统一管理之后,我们后期升级依赖版本的时候也更加方便,不需要去各个Module中修改其pom.xml文件中的依赖版本号。维护更加方便。