Maven BOM [Bill Of Materials] 依赖
Posted
技术标签:
【中文标题】Maven BOM [Bill Of Materials] 依赖【英文标题】:Maven BOM [Bill Of Materials] Dependency 【发布时间】:2016-11-24 13:28:40 【问题描述】:我不明白 bom 对象的目的是什么?我正在使用 Spring 3.2.8 版本和 JBoss 服务器,那么我需要使用哪个 bom 依赖项?当我在 pom.xml 中提到以下依赖项时:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.0.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
jar 文件是否会下载到我的 Maven 依赖项中?
【问题讨论】:
文档回答了您的问题:Maven "Bill Of Materials" Dependency。如果你想使用 Spring 3.2.8,那么显然你需要为 Spring 3.2.8 而不是 Spring 4.0.1 导入 POM... 感谢您的回复,实际上我的应用程序在 tomcat web 服务器上运行良好,现在我必须在 JBoss 服务器上运行。我想做出哪些改变?在配置和依赖方面? 【参考方案1】:bom 对象的用途是什么?
Maven 父子关系对于在一个地方管理多个项目的依赖关系非常方便。但是,Maven 项目只能有一个(直接)父级。因此引入了依赖项管理的导入,以允许使用多个项目来管理您的依赖项。通过导入,您可以像这样定义单个依赖项并管理多个依赖项 - 方便!尽管您可以导入任何项目,但 BOM 是一个特殊项目,旨在用于此类导入。通常一个 BOM 项目除了dependencyManagement
部分之外定义的很少,并且不会有任何无关的依赖项,以免对您的主项目造成太大影响。
我需要使用哪个 bom 依赖项?
BOM 不是必需的,您也不需要使用。相反,您可以自己在 dependencyManagement 部分中定义所有托管依赖项。这些可以包括 Spring、JBoss 和任何其他依赖项。然而,BOM 为您大大简化了这一过程。您可以根据需要添加任意数量的 BOM,因此请同时添加!但正如@Jesper 提到的,不要忘记使用正确的版本。使用多个 BOM 时,如果它们都引用公共依赖项,它们的顺序将很重要。
jar 文件是否会下载到我的 Maven 依赖项中?
注意 BOM 是 <type>pom</type>
,而不是默认的 jar
。所以没有要下载的jar。 Maven 将下载并读取单个 pom.xml 文件。
【讨论】:
感谢您的解释。 似乎将 ..bom 的属性导入到我们导入的地方/项目中存在问题<type>
和 <import>
对于 <dependencyManagment>
标签中的那些 maven 依赖项的默认值是什么?
默认类型为jar
,默认范围为compile
,没有import
标签。欲了解更多信息,请参阅maven.apache.org/guides/introduction/…
我花了一天时间把bom放到依赖管理部分,希望maven能下载bom中的所有jar。只有在我阅读了你的答案之后,我才意识到,我们必须将我们自己需要的依赖项与 bom 一起放入 pom 中。 bom 所做的唯一帮助是维护 jar 的版本。谢谢你的解释。以上是关于Maven BOM [Bill Of Materials] 依赖的主要内容,如果未能解决你的问题,请参考以下文章
The Basics of the Doherty Amplifier-Bill Slade