Maven BOM [物料清单]依赖性

时间:2016-07-21 06:01:31

标签: java spring maven dependencies pom.xml

我不明白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依赖项中?

1 个答案:

答案 0 :(得分:42)

bom对象的目的是什么?

Maven父子关系非常便于在一个地方管理多个项目的依赖关系。但是,Maven项目只能有一个(直接)父项。因此,引入了依赖项管理的导入,以允许使用多个项目来管理依赖项。通过导入,您可以定义像这样的单个依赖项并管理多个依赖项 - 方便!虽然您可以导入任何项目,但BOM是一个特殊项目,旨在用于此类导入。通常,BOM项目除了dependencyManagement部分之外几乎没有定义,并且不会有任何不相关的依赖项,以避免过多地影响您的主项目。

我需要使用哪种bom依赖?

BOM不是必需的,您也不需要使用。相反,您可以自己在dependencyManagement部分中定义所有托管依赖项。这些可以包括Spring,JBoss和任何其他依赖项。然而,BOM显着简化了这一点。您可以根据需要添加任意数量的物料清单,因此请同时添加两者!但正如@Jesper所提到的,不要忘记使用正确的版本。当使用多个BOM时,如果它们都引用了公共依赖关系,那么它们的顺序就会很重要。

jar文件是否会下载到我的Maven依赖项中?

通知BOM是<type>pom</type>,而不是默认jar。所以没有jar可以下载。单个pom.xml文件将由Maven下载并读取。