Maven项目中<dpendencies>和 <dependencyManagement>
- 一、前言
- 1. <dependencies>
- 2. <dependencyManagement>
- 3. 总结
一、前言
在Maven项目中,<dependencies>
和 <dependencyManagement>
是用于管理项目依赖的两个不同部分,它们在项目依赖的处理方式上有显著区别。
1. <dependencies>
-
用途: 用于定义实际的项目依赖。
-
作用: 在父项目的
<dependencies>
部分定义的依赖,会直接被所有子项目继承。子项目在继承父项目的依赖时,可以直接使用父项目中定义的依赖项,无需在子项目中再次声明。 -
版本控制: 在
<dependencies>
中,你需要为每个依赖明确指定版本号。<dependencies><dependency><groupId>com.example</groupId><artifactId>example-library</artifactId><version>1.0.0</version></dependency> </dependencies>
子项目继承了父项目的这个配置后,可以直接使用
example-library
依赖,而不需要在子项目中再声明该依赖。
2. <dependencyManagement>
-
用途: 用于集中管理依赖的版本号和范围,但不会直接将这些依赖引入子项目。
-
作用: 在父项目的
<dependencyManagement>
部分定义的依赖,只是提供了一种版本的集中管理方式。子项目需要显式声明这些依赖,才能在子项目中使用。 -
版本控制: 在
<dependencyManagement>
中,你只需要指定依赖的版本,而子项目在声明依赖时可以省略版本号,依赖的版本将由父项目的<dependencyManagement>
中定义的版本决定。<dependencyManagement><dependencies><dependency><groupId>com.example</groupId><artifactId>example-library</artifactId><version>1.0.0</version></dependency></dependencies> </dependencyManagement>
在子项目中,你需要显式声明你需要的依赖,但版本号可以省略:
<dependencies><dependency><groupId>com.example</groupId><artifactId>example-library</artifactId><!-- No version needed, inherited from parent --></dependency> </dependencies>
3. 总结
<dependencies>
: 定义了具体的项目依赖,会被子项目继承和应用。需要在子项目中显示声明依赖及其版本。<dependencyManagement>
: 提供了依赖版本的集中管理,但不直接引入依赖。子项目需要显式声明所需的依赖,版本号由父项目中的<dependencyManagement>
提供。
通过这种方式,<dependencyManagement>
可以帮助你统一和集中管理依赖版本,而 <dependencies>
则实际引入和使用这些依赖。