使用背景:
当某个项目包含多个模块,每个模块都需要引用相同的包(例如:
quartz),为了保证各个子模块之间因为包的问题出现版本冲突,maven引入了dependcy management。
使用说明:
通过一个简单的工程例子来说明:例如某一个工程的目录结构如下(通过引用
quartz
依赖为例):
demo
--module1
----src
----pom.xml
--module2
----src
----pom.xml
--pom.xml
1. 在demo的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>demo</groupId>
<artifactId>demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.6.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>module1</module>
<module>module2</module>
</modules>
</project>
2. module1与module2的pom中进行如下配置中分别加入以下依赖即可:
<dependencies>
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
</dependency>
</dependencies>
3. 如果要更改所依赖的版本信息:只需要更改父pom里面的配置即可。子目录下会默认查找。
总结:
01. 使用dependencyManagement可以有效解决一个工程下多个模块引用包版本的一致性。
02. 更新维护版本方便,不用维护子模块的版本信息,只需要更改主模块的版本信息即可。
03. 减少各个子模块对版本选择的困扰,统一由父模块决定。