第 5 章 在 Red Hat build of Quarkus 平台上开始使用 Red Hat Build of OptaPlanner
红帽构建的 OptaPlanner 与红帽构建的 Quarkus 平台集成。平台工件依赖项的版本(包括 OptaPlanner 依赖项)在 materials (BOM)文件的 Quarkus bill 中维护,该文件 com.redhat.quarkus.platform:quarkus-bom
。您不需要指定哪些依赖项版本协同工作。相反,您可以将 Quarkus BOM 文件导入到 pom.xml
配置文件,其中依赖项版本包含在 < dependencyManagement>
部分中。因此,您不需要列出由 pom.xml
文件中指定 BOM 管理的单个 Quarkus 依赖项版本。
其他资源
- 有关使用 Maven 插件在 Quarkus 平台上创建 OptaPlanner 项目的说明,请参阅 第 5.2 节 “使用 Maven 插件在 Quarkus 平台上创建红帽构建的 OptaPlanner 项目”。
-
有关使用
code.quarkus.redhat.com
网站在 Quarkus 平台上生成 OptaPlanner 项目的说明,请参阅 第 5.3 节 “使用 code.quarkus.redhat.com 在 Quarkus 平台上创建红帽构建的 OptaPlanner 项目”。 - 有关使用 CLI 在 Quarkus 平台上生成 OptaPlanner 项目的说明,请参阅 第 5.4 节 “使用 Quarkus CLI 在 Quarkus 平台上创建红帽构建的 OptaPlanner 项目”。
5.1. Apache Maven 和红帽构建的 Quarkus
Apache Maven 是 Java 应用程序开发中使用的分布式构建自动化工具,用于创建、管理和构建软件项目。Maven 使用名为 Project Object Model(POM)文件的标准配置文件来定义项目并管理构建流程。POM 文件描述了模块和组件依赖项,使用 XML 文件描述生成的项目打包和输出的构建顺序和目标。这可确保以正确、一致的方式构建项目。
Maven 存储库
Maven 存储库存储 Java 库、插件和其他构建构件。默认公共存储库是 Maven 2 Central Repository,但存储库可以是私有和内部的,以在开发团队之间共享通用工件。也可从第三方提供存储库。
您可以将在线 Maven 存储库与 Quarkus 项目一起使用,也可以下载红帽构建的 Quarkus Maven 存储库。
Maven 插件
Maven 插件是 POM 文件的定义部分,实现一个或多个目标。Quarkus 应用程序使用以下 Maven 插件:
-
Quarkus Maven 插件(
quarkus-maven-plugin
): 启用 Maven 来创建 Quarkus 项目,支持生成 uber-JAR 文件,并提供开发模式。 -
Maven Surefire 插件(
maven-surefire-plugin
):在构建生命周期的测试阶段使用,以便在应用程序上执行单元测试。插件生成包含测试报告的文本和 XML 文件。
5.1.1. 为在线存储库配置 Maven settings.xml
文件
您可以通过配置用户 settings.xml
文件,将在线 Maven 存储库与 Maven 项目搭配使用。这是推荐的方法。与共享服务器上的存储库管理器或存储库一起使用的 Maven 设置提供更好的项目控制和易管理性。
当您修改 Maven settings.xml
文件来配置存储库时,这些更改将应用到所有 Maven 项目。
流程
在文本编辑器中打开 Maven
~/.m2/settings.xml
文件或集成开发环境(IDE)。注意如果
~/.m2/
目录中没有settings.xml
文件,请将settings.xml
文件从$MAVEN_HOME/.m2/conf/
目录中复制到~/.m2/
目录中。在
settings.xml
文件的<profiles
> 元素中添加以下行:<!-- Configure the Maven repository --> <profile> <id>red-hat-enterprise-maven-repository</id> <repositories> <repository> <id>red-hat-enterprise-maven-repository</id> <url>https://maven.repository.redhat.com/ga/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>red-hat-enterprise-maven-repository</id> <url>https://maven.repository.redhat.com/ga/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile>
在
settings.xml
文件的 <activeProfiles
> 元素中添加以下行并保存文件。<activeProfile>red-hat-enterprise-maven-repository</activeProfile>
5.1.2. 下载并配置 Quarkus Maven 存储库
如果您不想使用在线 Maven 存储库,您可以下载并配置 Quarkus Maven 存储库,以使用 Maven 创建 Quarkus 应用程序。Quarkus Maven 存储库包含 Java 开发人员通常用于构建其应用程序的许多要求。此流程描述了如何编辑 settings.xml
文件来配置 Quarkus Maven 存储库。
当您修改 Maven settings.xml
文件来配置存储库时,这些更改将应用到所有 Maven 项目。
流程
- 从红帽客户门户的软件下载页面(需要登录) 下载 红帽构建的 Quarkus Maven 存储库 ZIP 文件。
- 展开下载的存档。
-
将目录更改为
~/.m2/
目录,并在文本编辑器中打开 Mavensettings.xml
文件或集成开发环境(IDE)。 将以下行添加到
settings.xml
文件的 <profiles
> 元素中,其中QUARKUS_MAVEN_REPOSITORY
是您下载的 Quarkus Maven 存储库的路径。QUARKUS_MAVEN_REPOSITORY
的格式必须是file://$PATH
,例如file:///home/userX/rh-quarkus-2.13.8.GA-maven-repository/maven-repository
。<!-- Configure the Quarkus Maven repository --> <profile> <id>red-hat-quarkus-maven-repository</id> <repositories> <repository> <id>red-hat-quarkus-maven-repository</id> <url>QUARKUS_MAVEN_REPOSITORY</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>red-hat-quarkus-maven-repository</id> <url>QUARKUS_MAVEN_REPOSITORY</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile>
在
settings.xml
文件的 <activeProfiles
> 元素中添加以下行并保存文件。<activeProfile>red-hat-quarkus-maven-repository</activeProfile>
如果您的 Maven 存储库包含过时的工件,您可能会在构建或部署项目时遇到以下 Maven 错误消息之一,其中 ARTIFACT_NAME
是缺少工件,PROJECT_NAME
是您要构建的项目的名称:
-
缺少工件 PROJECT_NAME
-
[ERROR] Failed to execute goal on project ARTIFACT_NAME; Could not resolve dependencies for PROJECT_NAME
要解决这个问题,请删除 ~/.m2/repository
目录中的本地存储库的缓存版本,以强制下载最新的 Maven 工件。