在maven中这两个标签长的很相似,dependencyManagement很眼熟也是使用过,但是不知道二者之间的具体区别,这一次做一个辨析
- dependencyManagement
使用maven进行多模块的依赖管理时,dependencyManagement可以保证父模块下面的所有子模块所引用的包的版本是一致的,这句话比较长,下面举个例子:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
子模块中只需要groupid和artifactId即可,如:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
在父模块中使用dependencyManagement标签进行依赖的声明,只是一个声明,子模块如果继承了父模块,不会自动引入父模块中dependencyManagement下面的依赖,如果需要使用,那么子模块需要显式的进行声明,但只需要声明除了版本之外的其他因素就可以了,版本号不需要进行声明,全部使用父模块中规定的版本号,这样就可以达到在所有子模块中控制依赖版本统一的效果
当然,如果不想使用父模块中的版本,那么可以在子模块中单独声明,这时maven会以子模块中的为准
- dependencies
和dependencyManagement不同的是,如果在父模块中的所以依赖均使用dependencies标签进行声明,那么所有子模块会自动的引入父模块中的全部依赖,如果这样,那么子模块中可能会引入一些自己用不到的依赖,和上面的定制化的方式相比起来劣势很明显