Skip to main content

全局依赖管理 (Dependencies)

依赖管理的目的​

  1. 依赖的一致性:依赖管理在Maven中的主要目的是为了在一个中心位置定义项目的所有依赖项的版本,这样就可以避免在每个使用这些依赖项的模块中定义版本。这对于多模块项目来说特别有用,因为它可以帮助保持所有模块使用的依赖项版本的一致性。

  2. 版本的管理:的当在dependenciesManagement中定义了一个依赖项后,该依赖项在子模块中就可以不必指定版本号,Maven会自动使用在dependenciesManagement中定义的版本。如果在子模块中指定了版本号,那么该版本号将覆盖dependenciesManagement中的版本。

  3. 使用的便利性:这样做的好处是,当需要升级或者更改依赖项的版本时,只需要在一个地方修改,而不需要在每个使用该依赖项的模块中单独修改。这大大简化了版本管理的复杂性,也降低了出错的可能性。

  4. 项目行为的统一:而公司级的依赖管理,可以帮助公司统一管理所有项目的依赖项,保持所有项目的依赖项版本的一致性,也可以帮助公司统一管理所有项目的编译插件配置,保持所有项目的编译插件配置的一致性。

  5. CVE漏洞的处理:当项目中使用的某个依赖出现了CVE漏洞时,只需要在公司级的依赖管理中升级该依赖的版本,所有项目都会自动使用新版本,这样可以大大减少升级依赖的工作量。

依赖管理的使用​

公司所有的项目在创建后都应该通过Maven的POM文件继承公司级的依赖管理,这样可以保证所有项目依赖的统一,以及Maven插件配置的统一,而项目组的项目本身也需要有自己的dependencies模块进行项目的个性化依赖管理,以多级分制的方式来管理依赖。

例:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<!-- 修改parent:继承平台组件父工程 -->
<parent>
<groupId>cn.com.rydeen.base</groupId>
<artifactId>rydeen-dependencies</artifactId>
<version>4.6.0</version>
<relativePath />
</parent>

<name>demo-project</name>
<description>演示工程</description>
<groupId>cn.com.rydeen.platform</groupId>
<artifactId>platform-demo</artifactId>

<!-- 其他配置,省略 -->
......
</project>

依赖管理的组织架构图​

structure.svg