2.3. 使用 Maven Repository


2.3.1. 配置 JBoss EAP Maven 存储库

概述

有两种方法可以指示 Maven 在您的项目中使用 JBoss EAP Maven Repository:

使用 Maven 设置配置 JBoss EAP Maven 存储库

这是推荐的方法。与共享服务器上的存储库管理器或存储库一起使用的 Maven 设置提供更好的项目的控制和可管理性。设置还支持使用替代镜像将特定存储库的所有查找请求重定向到存储库管理器,而不更改项目文件。有关镜像的详情请参考 http://maven.apache.org/guides/mini/guide-mirror-settings.html

这种配置方法适用于所有 Maven 项目,只要 POM 文件不包含存储库配置。

本节论述了如何配置 Maven 设置。您可以配置 Maven 安装全局设置或用户的安装设置。

配置 Maven 设置文件

  1. 找到您的操作系统的 Maven settings.xml 文件。它通常位于 ${user.home}/.m2/ 目录中。

    • 对于 Linux 或 Mac,这是 ~/.m2/
    • 对于 Windows,这是 \Documents 和 Settings\.m2\ 或 \Users\.m2\
  2. 如果您找不到 settings.xml 文件,请将 ${user . home}/.m2/conf/ 目录中的 settings.xml 文件复制到 ${user.home}/.m2/ 目录中。
  3. 将以下 XML 复制到 settings.xml 文件的 <profiles> 元素 中。确定 JBoss EAP 存储库的 URL, 并将 JBOSS_EAP_REPOSITORY_URL 替换为此存储库。

    <!-- Configure the JBoss Enterprise Maven repository -->
    <profile>
      <id>jboss-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>jboss-enterprise-maven-repository</id>
          <url>JBOSS_EAP_REPOSITORY_URL</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>jboss-enterprise-maven-repository</id>
          <url>JBOSS_EAP_REPOSITORY_URL</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    Copy to Clipboard Toggle word wrap

    以下是访问在线 JBoss EAP Maven 存储库的示例配置:

    <!-- Configure the JBoss Enterprise Maven repository -->
    <profile>
      <id>jboss-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>jboss-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>jboss-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>
    Copy to Clipboard Toggle word wrap
  4. 将以下 XML 复制到 settings.xml 文件的 <activeProfiles> 元素 中。

    <activeProfile>jboss-enterprise-maven-repository</activeProfile>
    Copy to Clipboard Toggle word wrap
  5. 如果在 Red Hat CodeReady Studio 运行时修改 settings.xml 文件,您必须刷新用户设置。

    1. 在菜单中,选择 Window Preferences
    2. "首选项 "窗口中,展开 Maven,然后选择 "用户设置 "。
    3. 单击 Update Settings 按钮,以刷新 Red Hat CodeReady Studio 中的 Maven 用户设置。
重要

如果您的 Maven 存储库包含过时的工件,则构建或部署项目时可能会遇到以下 Maven 错误消息之一:

  • 缺少工件 ARTIFACT_NAME
  • [ERROR] 在项目 PROJECT_NAME 上执行目标失败; 无法解析 PROJECT_NAME的依赖项

要解决这个问题,请删除本地存储库的缓存版本,以强制下载最新的 Maven 工件。缓存的存储库位于此处: ${user.home}/.m2/repository/

使用 Project POM 配置 JBoss EAP Maven 存储库
警告

您应该避免使用这种配置方法,因为它会覆盖配置的项目的全局和用户 Maven 设置。

如果您决定使用项目 POM 文件配置存储库,您必须仔细规划。Transitively POM 是这类配置的问题,因为 Maven 必须查询外部存储库查找缺少的工件,这会减慢构建过程。它还可能导致您失去对工件来自哪里的控制。

注意

存储库的 URL 将取决于存储库所在的位置:在文件系统或 Web 服务器上。有关如何安装存储库的详情,请参考: 安装 JBoss EAP Maven 存储库。以下是每个安装选项的示例:

文件系统
file:///path/to/repo/jboss-eap-maven-repository
Apache Web Server
http://intranet.acme.com/jboss-eap-maven-repository/
Nexus 存储库管理器
https://intranet.acme.com/nexus/content/repositories/jboss-eap-maven-repository

配置项目的 POM 文件

  1. 在文本编辑器中打开项目的 pom.xml 文件。
  2. 添加以下存储库配置:如果文件中已有 <repositories> 配置,请在其中添加 <repository> 元素。确保将 <url> 改为 实际的存储库位置。

    <repositories>
       <repository>
          <id>jboss-eap-repository-group</id>
          <name>JBoss EAP Maven Repository</name>
          <url>JBOSS_EAP_REPOSITORY_URL</url>
          <layout>default</layout>
          <releases>
             <enabled>true</enabled>
             <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
             <enabled>true</enabled>
             <updatePolicy>never</updatePolicy>
          </snapshots>
       </repository>
    </repositories>
    Copy to Clipboard Toggle word wrap
  3. 添加以下插件存储库配置:如果文件中已有 <pluginRepositories> 配置,请在其中添加 <pluginRepository> 元素。

    <pluginRepositories>
       <pluginRepository>
          <id>jboss-eap-repository-group</id>
          <name>JBoss EAP Maven Repository</name>
          <url>JBOSS_EAP_REPOSITORY_URL</url>
          <releases>
             <enabled>true</enabled>
          </releases>
          <snapshots>
             <enabled>true</enabled>
          </snapshots>
       </pluginRepository>
    </pluginRepositories>
    Copy to Clipboard Toggle word wrap
确定 JBoss EAP 存储库的 URL

存储库 URL 取决于存储库所在的位置。您可以将 Maven 配置为使用以下任一存储库位置:

  • 要使用在线 JBoss EAP Maven 存储库,请指定以下 URL :https://maven.repository.redhat.com/ga/
  • 若要使用本地文件系统上安装的 JBoss EAP Maven 存储库,您必须下载存储库,然后使用本地文件路径作为 URL。例如: file:///path/to/repo/jboss-eap-7.4.0-maven-repository/maven-repository/
  • 如果您在 Apache Web 服务器上安装软件仓库,则存储库 URL 将类似以下示例: http://intranet.acme.com/jboss-eap-7.4.0-maven-repository/maven-repository/
  • 如果您使用 Nexus Repository Manager 安装 JBoss EAP Maven 存储库,则 URL 类似如下内容 :https://intranet.acme.com/nexus/content/repositories/jboss-eap-7.4.0-maven-repository/maven-repository/
注意

对于文件服务器上的存储库,可使用常用协议(如 http:// )访问远程存储库,如 HTTP 服务器或 file:// 上的存储库。

2.3.2. 配置 Maven 以用于 Red Hat CodeReady Studio

构建应用程序并将其部署至红帽 JBoss 企业应用平台所需的构件和依赖关系托管在公共存储库中。构建应用程序时,您必须指示 Maven 使用此存储库。如果您计划使用 Red Hat CodeReady Studio 构建和部署应用,本节将介绍配置 Maven 的步骤。

Maven 随 Red Hat CodeReady Studio 一起发布,因此不需要单独安装。但是,您必须配置 Maven,以供 Java EE Web 项目向导使用,以部署到 JBoss EAP。以下流程演示如何通过从 Red Hat CodeReady Studio 编辑 Maven 配置文件来配置 Maven 以用于 JBoss EAP。

注意

如果您在 Red Hat CodeReady Studio 中将 Target runtime 设为 7.4 或更新的运行时版本,则您的项目与 Jakarta EE 8 规范兼容。

在 Red Hat CodeReady Studio 中配置 Maven

  1. 点击 Window Preferences,展开 JBoss Tools 并选择 JBoss Maven Integration

    图 2.1. Preferences 窗口中的 JBoss Maven 集成 Pane

    Preferences 窗口中的 JBoss Maven 集成 Pane
  2. 单击 Configure Maven Repositories
  3. 单击 Add Repository 以配置 JBoss 企业 Maven 存储库。按如下所示完成 Add Maven Repository 对话框:

    1. Profile ID存储库 IDRepository Name 值设置为 jboss-ga-repository
    2. Repository URL 值设置为 http://maven.repository.redhat.com/ga
    3. 单击 默认活动 复选框,以启用 Maven 存储库。
    4. 点击 OK

      图 2.2. 添加 Maven Repository

      添加 Maven Repository
  4. 检查存储库并点击 Finish
  5. 系统将提示您显示消息 "是否确定要更新文件 MAVEN_HOME/settings.xml?"。单击 Yes 以更新设置。单击 确定 关闭该对话框。

JBoss EAP Maven 存储库现在已配置为与红帽 CodeReady Studio 搭配使用。

2.3.3. 管理项目依赖项

这部分论述了在红帽 JBoss 企业应用平台上对材料(BOM)POM 的使用情况。

BOM 是一个 Maven pom.xml (POM)文件,用于指定模块的所有运行时依赖项的版本。版本依赖项列在 文件的依赖项管理部分中。

项目使用 BOM,方法是将其 groupId:artifactId:version (GAV)添加到项目的 pom.xml 文件的依赖项管理部分,并指定 <scope>import</scope><type>pom</type> 元素值。

注意

在很多情况下,POM 项目文件中的依赖关系使用 提供 的范围。这是因为这些类是在运行时由应用服务器提供的,而且不需要将它们与用户应用打包。

支持的 Maven Artifacts

作为产品构建流程的一部分,JBoss EAP 的所有运行时组件都是从受控环境中的源代码构建的。这有助于确保二进制工件不包含任何恶意代码,并且它们在产品的生命周期内得到支持。这些工件可以通过 -redhat 版本限定符(如 1.0.0-redhat-1 )轻松识别。

将受支持的构件添加到构建配置 pom.xml 文件可确保构建使用正确的二进制构件来进行本地构建和测试。请注意,带有 -redhat 版本的构件不一定是受支持的公共 API 的一部分,将来的修订可能会改变。有关公共支持的 API 的详情,请查看发行版中包含的 Javadoc 文档

例如,要使用受支持的 Hibernate 版本,请在构建配置中添加类似如下的内容:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.3.1.Final-redhat-1</version>
  <scope>provided</scope>
</dependency>
Copy to Clipboard Toggle word wrap

请注意,上例中包含 <version/> 字段的值。不过,建议您使用 Maven 依赖项管理来配置依赖项版本。

依赖项管理

Maven 包括管理整个构建过程中直接和传递依赖关系版本的机制。有关使用依赖项管理的一般信息,请参阅 Apache Maven 项目: 依赖机制简介

在您的构建中直接使用一个或多个支持的红帽依赖关系不能保证所有构建的传递依赖项都会被完全支持。Maven 构建通常使用来自 Maven 中央存储库和其他 Maven 存储库的构件源组合。

JBoss EAP Maven 存储库中包含了依赖性管理 BOM,用于指定所有支持的 JBoss EAP 二进制构件。此 BOM 可以在构建中使用,以确保 Maven 将受支持的 JBoss EAP 依赖项的优先级放在构建中的所有直接和传递依赖关系上。换句话说,传输依赖关系将管理到正确的受支持的依赖版本(若适用)。此 BOM 的版本与 JBoss EAP 版本匹配。

<dependencyManagement>
  <dependencies>
    ...
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>eap-runtime-artifacts</artifactId>
      <version>7.4.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>
Copy to Clipboard Toggle word wrap
注意

在 JBoss EAP 7 中,此 BOM 的名称已从 eap6 支持的工件改为 eap -runtime-artifacts。此更改的目的是更清楚,此 POM 中的工件是 JBoss EAP 运行时的一部分,但不一定是受支持的公共 API 的一部分。些 JAR 包含内部 API 和功能,它们可能会在版本间有所变化。

JBoss EAP Jakarta EE Specs BOM

jboss-jakartaee-8.0 BOM 包含 JBoss EAP 使用的 Jakarta EE 规范 API JAR。

要在项目中使用此 BOM,请首先在 POM 文件的 dependencyManagement 部分中添加 jboss-jakartaee-8.0 BOM 依赖项,为 groupId 指定 org.jboss.spec,然后添加应用所需特定 API 的依赖项。这些依赖项不需要版本,并使用 提供 的范围,因为 jboss-jakartaee-8.0 BOM 中包含了这些 API。

以下示例使用 jboss-jakartaee-8.0 BOM 的 1.0.0.Alpha1 版本添加 Servlet 和 Jakarta 服务器页面 API 的依赖项。

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.jboss.spec</groupId>
      <artifactId>jboss-jakartaee-8.0</artifactId>
      <version>1.0.0.Alpha1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.jboss.spec.javax.servlet</groupId>
    <artifactId>jboss-servlet-api_4.0_spec</artifactId>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>org.jboss.spec.javax.servlet.jsp</groupId>
    <artifactId>jboss-jsp-api_2.3_spec</artifactId>
    <scope>provided</scope>
  </dependency>
  ...
</dependencies>
Copy to Clipboard Toggle word wrap
注意

JBoss EAP 为大部分产品组件的 API 打包并提供 BOM。许多此类 BOM 都方便地打包到一个更大的 jboss-eap-jakartaee8 BOM 中,组Id 为 org.jboss.bomjboss-jakartaee-8.0 BOM( 组为 org. jboss.spec )包含在这个较大的 BOM 中。这意味着,如果您使用在此 BOM 中打包的其他 JBoss EAP 依赖项,您只需将一个 jboss-eap-jakartaee8 BOM BOM 添加到项目的 POM 文件中,而不是单独添加 jboss-jakartaee-8.0 和其他 BOM 依赖项。

JBoss EAP BOMs 可用于应用程序开发

下表列出了可用于应用程序开发的 Maven BOMs。

Expand
表 2.1. JBoss BOMs
BOM Artifact ID使用案例

eap-runtime-artifacts

支持的 JBoss EAP 运行时构件.

jboss-eap-jakartaee8

支持的 JBoss EAP Jakarta EE 8 API 外加其他 JBoss EAP API JAR.

jboss-eap-jakartaee8-with-tools

jboss-eap-jakartaee8 加上 Arquillian 等开发工具.

注意

JBoss EAP 6 中的这些 BOM 合并到更少的 BOM 中,以简化大多数用例的使用。Hibernate、日志记录、事务、消息传递和其他公共 API JAR 现在包含在 jboss-eap-jakartaee8 BOM 中,而不是为每个情况要求单独的 BOM。

以下示例使用 jboss-eap-jakartaee8 BOM 的 7.4.0.GA 版本。

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>jboss-eap-jakartaee8</artifactId>
      <version>7.4.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <scope>provided</scope>
  </dependency>
  ...
</dependencies>
Copy to Clipboard Toggle word wrap
JBoss EAP 客户端 BOM

客户端 BOMs 不创建依赖项管理部分或定义依赖项。相反,它们是其他 BOM 的聚合,用于打包远程客户端用例所需的一组依赖项。

wildfly-ejb-client-bomwildfly-jms-client -bom 和 wildfly-jaxws-client-bomjboss-eap-jakartaee8 BOM 管理,因此您无需管理项目依赖项中的版本。

以下是如何将 wildfly-ejb-client-bom、wildfly- jms-client-bomwildfly-jaxws-client-bom 依赖项添加到项目的示例:

<dependencyManagement>
  <dependencies>
    <!-- JBoss stack of the Jakarta EE APIs and related components.  -->
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>jboss-eap-jakartaee8</artifactId>
      <version>7.4.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
  ...
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-ejb-client-bom</artifactId>
    <type>pom</type>
  </dependency>
  <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-jms-client-bom</artifactId>
    <type>pom</type>
  </dependency>
  <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-jaxws-client-bom</artifactId>
    <type>pom</type>
  </dependency>
  ...
</dependencies>
Copy to Clipboard Toggle word wrap

有关 Maven 依赖项和 BOM POM 文件的更多信息,请参阅 Apache Maven Project - 依赖机制简介

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部