问题
pom.xml配置文件中的dependencies与dependencyManagement有什么区别?在使用上有什么注意要点呢?
解决
dependencyManagement主要用来控制所有子项目依赖的版本号。dependencyManagement只会影响现有依赖的配置,但不会引入依赖。在parent中严禁直接使用depandencys预定义依赖,坏处是子model会自动继承depandencys中所有预定义依赖;
为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。
dependencyManagement中依赖的版本号,是当前所有子项目依赖的默认版本号。
如果dependencies与dependencyManagement中的依赖版本号不同,则选用dependencies的依赖版本号。
扩展
如果dependencyManagement中有很多依赖,在修改某一个依赖的版本号时会产生查找不便的问题。
可以使用<properties></properties>以变量的形式将版本号聚集在一起,便于后续维护。
代码示例
<properties>
<commons.httpclient>3.1</commons.httpclient>
</properties>
<dependencies>
<!--httpclient-->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<!--httpclient-->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>${commons.httpclient}</version>
</dependency>
</dependencyManagement>

dependencyManagement在Maven中用于统一管理子项目依赖的版本,它不引入依赖,仅设定默认版本。dependencies则实际引入依赖到项目中。如果两者版本冲突,以dependencies为准。为方便维护,建议在dependencyManagement中使用properties定义版本号,并在dependencies和dependencyManagement中引用。这样做有助于保持项目依赖的一致性和简化版本管理。
801

被折叠的 条评论
为什么被折叠?



