Maven BOM – 物料清单依赖项
原文: https://howtodoinjava.com/maven/maven-bom-bill-of-materials-dependency/
如果您在项目中为依赖项管理使用过 maven,那么您必须至少遇到一个问题,或者可能更多。 问题是版本不匹配。 通常,当您获得一些依赖项并将其相关的依赖项与特定版本协作时,就会发生这种情况。 并且,如果您已经包含了具有不同版本号的那些依赖项,则它们可能在编译时以及运行时都面临不良结果。
理想情况下,为避免上述问题,您需要明确排除相关的依赖项,但您很有可能会忘记这样做。
要解决版本不匹配的问题,您可以使用“物料清单”(BOM)依赖项的概念。 BOM 依赖项跟踪版本号,并确保所有依赖项(直接和传递)都处于同一版本。
1. 如何添加 Maven BOM 依赖
Maven 为此提供了一个标签dependencyManagement
。 您需要按如下所示在此标记中添加 maven bom 信息。 我以 Spring Bom 文件为例。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.0.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
使用 BOM 的另一个好处是,根据 Spring 框架工件,您不再需要指定version
属性。 因此它将完全正常。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependencies>
每个项目都有自己的 Maven Bom 文件
请注意,没有通用或通用的 Bom 文件。 每个项目(如果支持此功能)都提供自己的 Bom 文件并管理其相关依赖项的版本。
以下是各种 Bom 文件的几个示例:
1)RESTEasy Maven BOM 依赖项
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-bom</artifactId>
<version>3.0.6.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. JBOSS Maven BOM 依赖项
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.bom</groupId>
<artifactId>jboss-javaee-6.0-with-tools</artifactId>
<version>${some.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3)Spring Maven BOM 依赖项
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.0.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
4)Jersey Maven BOM 依赖项
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这些只是几个例子。 因此,下次您在 Maven 中工作时,请尝试探索此功能。
3. Maven BOM 与 POM
首先,BOM 是普通的pom.xml
文件 - 它们不包含源代码,它们的唯一目的是声明其捆绑的模块。 它定义了将在库中创建的所有工件的版本。 其他希望使用该库的项目应将此 pom 导入到其 pom 的dependencyManagement
部分。
POM 文件不仅仅是依赖项。 例如组织和许可证,项目所在的 URL,项目的依赖项,插件,配置文件等等。 它还控制项目的完整构建过程。
学习愉快!
参考: