Maven BOM – 物料清单依赖项

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,项目的依赖项,插件,配置文件等等。 它还控制项目的完整构建过程。

学习愉快!

参考:

POM – Maven 文档

Maven 依赖机制