5.2. 使用 Spring Boot BOM
创建并构建第一个 Spring Boot 项目后,您将很快添加更多组件。但是,您是如何知道要添加到项目的 Maven 依赖项的哪个版本?最简单的(及推荐的)方法是使用相关的 Materials(BOM)文件,该文件自动为您定义所有版本依赖项。
5.2.1. 用于 Spring Boot 的 BOM 文件
Maven Bill of Materials(BOM) 文件的目的是提供一组精心设计的 Maven 依赖项版本,从而防止您为每个 Maven 工件单独定义版本。
请确定您使用正确的 Fuse BOM,具体取决于您使用的 Spring Boot 版本。
用于 Spring Boot 的 Fuse BOM 具有以下优点:
- 定义 Maven 依赖项的版本,因此当您向 POM 添加依赖项时,您不需要指定版本。
- 定义一组经过策展的依赖关系,这些依赖项是针对特定版本的 Fuse 完全测试和支持的。
- 简化 Fuse 升级.
红帽只支持由 Fuse BOM 定义的一组依赖项。
5.2.2. 融合 BOM 文件
要将 BOM 文件合并到 Maven 项目中,请在项目的 pom.xml
文件中指定一个 dependencyManagement
元素(或者在父 POM 文件中,如 Spring Boot 2 的示例中所示:
Spring Boot 2 BOM
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project ...> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- configure the versions you want to use here --> <fuse.version>7.11.1.fuse-sb2-7_11_1-00022-redhat-00002</fuse.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>fuse-springboot-bom</artifactId> <version>${fuse.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ... </project>
在使用依赖关系管理机制指定 BOM 后,可以在不指定工件版本的情况下将 Maven 依赖项添加到 POM 中。例如,要为 camel-hystrix
组件添加一个依赖项,您要将以下 XML 片段添加到 POM 中的 dependencies
元素中:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-hystrix-starter</artifactId> </dependency>
请注意,Camel 工件 ID 如何通过 -starter
后缀是:将 Camel Hystrix 组件指定为 camel-hystrix-starter
,而非 camel-hystrix
。Camel 启动程序组件以针对 Spring Boot 环境进行优化的方式打包。
5.2.3. Spring Boot Maven 插件
Spring Boot Maven 插件由 Spring Boot 提供,它是用于构建和运行 Spring Boot 项目的开发人员实用程序:
-
通过在项目目录中输入命令
mvn 软件包,为 Spring Boot 应用程序创建可执行的 Jar 软件包
。构建的输出放置在 Maven 项目的target/
子目录中。 -
为方便起见,可以使用命令
mvn spring-boot:start
运行新构建的应用程序。
要将 Spring Boot Maven 插件整合到项目 POM 文件中,请将插件配置添加到您的 pom.xml
文件的 project/build/plugins
部分,如下例所示。
示例
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project ...> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- configure the versions you want to use here --> <fuse.version>7.11.1.fuse-sb2-7_11_1-00022-redhat-00002</fuse.version> </properties> ... <build> <plugins> <plugin> <groupId>org.jboss.redhat-fuse</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${fuse.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ... </project>