dependencyManagement标签,我个人认为它命名不好,刚学maven的时候,乍眼一看应该是对maven依赖进行管理,其实,它只是用来统一管理依赖版本的,记住,是版本,其目的是防止不同子项目引用不同的版本而导致编写代码的时候出现意外错误
一.假设有项目P,其pom文件如下
// 项目名称叫做P
<groupId>com</groupId>
<artifactId>P</artifactId>
// 定义版本管理,如果P的子项目使用下列依赖,则不需要写version标签
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com</groupId>
// 如果P的子项目使用A,可以不写<version>标签,默认认为A的版本号是666
<artifactId>A</artifactId>
<version>666</version>
</dependency>
</dependencies>
</dependencyManagement>
二.现有P的子项目,这个子项目如果想使用A,有两种方式
方式1:使用parent标签,子项目POM文件应该这样写
//引用父项目P
<parent>
<groupId>com</groupId>
<artifactId>P</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
//子项目使用A,可以不写version
<dependencies>
<dependency>
<groupId>com.wentian</groupId>
<artifactId>A</artifactId>
//这里并没有使用<version>标签
</dependency>
</dependencies>
方式2:使用import标签,子项目POM文件应该这样写
//子项目使用A,注意使用import标签时,不再使用<parent>标签
<dependencies>
<dependency>
<groupId>com.wentian</groupId>
<artifactId>A</artifactId>
//这里并没有使用<version>标签
</dependency>
</dependencies>
//表示将父项目P的dependencyManagement拿到本POM中,不再继承parent
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com</groupId>
<artifactId>P</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type>//必须是type=pom
<scope>import</scope>//必须是scope=import
</dependency>
</dependencies>
</dependencyManagement>