![](/img/trans.png)
[英]Whats the difference between an Enterprise Application Project and an EJB Project?
[英]Whats the difference between project and BOM dependencies?
我注意到 Kubernetes 客户端的 fabric8.io 有两个以项目和 BOM 结尾的依赖项。
我注意到的唯一区别是它首先有一个分布式版本。 另外根据 apache 指南,bom 通常用作项目的父级。
还有其他用途/区别吗? 我应该在 Spring 引导中使用哪个依赖项?
BOM 项目既可以用作 Maven 模块的父项,也可以作为 BOM 依赖项导入,允许您从该 BOM 导入依赖项。 关于这个问题的一篇非常好的文章可以在这里找到。
为什么 BOM 很重要? 由于您已在问题中添加了 Spring 标签,假设您想使用某个 Spring 版本,并且只要它们具有相同的版本,component_1 就可以与 component_2 一起正常工作。 作为库开发人员,您将拥有一个包含 component_1 和 component_2 的版本化 BOM,并且在您的项目中,您需要导入带有您需要的版本的 BOM 和您需要的没有版本的组件,因为它将继承自您导入的物料清单/父级。 这正是 Spring 所做的。
如果上面的链接将来无法使用,这里是 BOM 的基本工作流程。
// BOM project
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>BaelDung-BOM</name>
<description>parent pom</description>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>a</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>b</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>c</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
// importing the BOM in your project
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>baeldung</groupId>
<artifactId>Test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Test</name>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>baeldung</groupId>
<artifactId>Baeldung-BOM</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<dependency>
<groupId>test</groupId>
<artifactId>b</artifactId>
<!-- version and scope omitted, inherited from the BOM, 1.0 and compile (you can override them here, but that defeats the purpose) -->
</dependency>
</dependencies>
</project>
请注意,导入 BOM 不会添加在dependencyManagement
部分中指定的所有依赖项,除非您将它们添加到项目的dependencies
项部分中。 它就像一个产品目录,它向您展示 BOM 为您提供的内容。
这是 Spring 启动 2.3.0 依赖项 pom.xml,带有dependencyManagement
部分,以查看真实世界 BOM 的样子(或者只是父项,如果您愿意)。
If you ever wanted to use Spring 6, Hibernate 5 and JUnit 5 & Assertion lib friends, assuming that all of them provide a BOM, you could include those 3 BOMs and every time you need to upgrade Spring version for your project, all you' d 需要更新导入的 Spring BOM 的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.