🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Maven BOM – 物料清单依赖项 > 原文: [https://howtodoinjava.com/maven/maven-bom-bill-of-materials-dependency/](https://howtodoinjava.com/maven/maven-bom-bill-of-materials-dependency/) 如果您在项目中为依赖项管理使用过 [**maven**](//howtodoinjava.com/maven/ "Maven Tutorials"),那么您必须至少遇到一个问题,或者可能更多。 问题是**版本不匹配**。 通常,当您获得一些依赖项并将其相关的依赖项与特定版本协作时,就会发生这种情况。 并且,如果您已经包含了具有不同版本号的那些依赖项,则它们可能在编译时以及运行时都面临不良结果。 理想情况下,为避免上述问题,您需要明确排除相关的依赖项,但您很有可能会忘记这样做。 要解决版本不匹配的问题,您可以使用“**物料清单**”(BOM)依赖项的概念。 BOM 依赖项跟踪版本号,并确保所有依赖项(直接和传递)都处于同一版本。 ## 1\. 如何添加 Maven BOM 依赖 Maven 为此提供了一个标签`dependencyManagement`。 您需要按如下所示在此标记中添加 **maven bom** 信息。 我以 Spring Bom 文件为例。 ```java <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`属性。 因此它将完全正常。 ```java <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 依赖项** ```java <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 依赖项** ```java <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 依赖项** ```java <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 依赖项** ```java <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 文档](https://maven.apache.org/pom.html) [Maven 依赖机制](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html)