一个 JBoss 项目
红帽

操作方法

Maven 基本配置

在应用程序开发中,Maven 提供了一个用于项目的标准化构建系统。将 Maven 用于您的项目的其中一个主要好处是,它促进了从一个或多个存储库中提取依赖项。本文作为一个使用 Maven 搭配 IDE 的介绍,它包含以下任务的说明

根 Maven 项目可以作为多个 Maven 模块的聚合器,这些模块又称为子项目。对于每个构成 Maven 项目一部分的模块,都会向该项目的 pom.xml 文件中添加一个 <module> 条目。一个包含 <module> 条目的 pom.xml 通常称为聚合器 pom。

当模块包含到一个项目中时,可以通过从父项目目录发出一个命令,对所有模块执行 Maven 目标。

请注意,提供的说明涉及到父模块项目结构的创建。如果您更喜欢创建一个简单的项目,只需从一个原型开始,或不要在步骤 2.a 中使用 pom 打包。

1. 创建一个新的 Maven 项目

使用以下说明创建多模块 Maven 项目的父项目。提供的说明确保将打包选项设置为 pom,这是多模块 Maven 项目的必要条件。或者,要创建一个独立 Maven 项目,请将打包选项设置为 pom 之外的其他选项。

  1. 创建一个新的项目

    1. 在工作区中,导航至 文件  新建  其他

    2. 过滤 字段中键入 maven,然后选择 Maven 项目

    3. 单击 下一步 以继续。

  2. 输入项目的初始详细信息

    1. 选中 创建简单项目(跳过原型选择) 复选框。如果选中了此复选框,那么向导的 选择一个原型 步骤将被跳过,并且项目类型将设置为 pom,这是基于此 Maven 项目创建一个 Maven 模块所必需的。或者,要创建一个独立的项目,请取消选中 创建简单项目(跳过原型选择) 复选框,然后按照向导中的说明进行操作。

    2. 确保未勾选使用默认工作区位置复选框,并使用浏览按钮为工作区文件指定非默认位置。建议使用非默认工作区位置,因为这样其他工具可以轻松访问工作区位置。

    3. 如果有需要,可以使用以下可选步骤进行进一步配置

      1. (可选)勾选将项目(项目)添加到工作集复选框将新创建的项目添加到工作集中。

      2. (可选)单击高级查看新 Maven 项目的更多可选高级配置,例如

        1. 解决工作区项目:以工作区项目打开的依赖项将得以解决,不必先安装到本地 Maven 仓库。通过这种方式,对其中一个依赖项所做的任何更改都将立即影响消耗它的其他项目(编译、重构等)。禁用解决工作区项目后,必须在进行任何更改(通过运行mvn install)后将存在于工作区中的依赖关系安装到本地 Maven 仓库,才能看到消耗它的项目产生的影响。

        2. 配置文件:选择要在工作区激活或停用的 Maven 配置文件集。配置文件在项目pom.xml中定义,或从父级pom.xml继承,或在相关的settings.xml文件中定义。

        3. 名称模板:允许你在工作区中通过在前缀或后缀添加组 ID 或 SCM 分支名称来消除项目名称歧义,以用于默认项目 ID。

          Create a New Maven Project
          图 1. 创建新的 Maven 项目
    4. 完成配置后,单击下一步继续。

  3. 配置项目详细信息

    1. 组 ID字段中输入所需的组 ID,它类似于组织命名空间(例如,com.company.businessunit.project)。

    2. 项目 ID字段中输入所需的项目 ID 值,它是你项目的名称。此值不得包含任何空格,仅允许使用的特殊字符为句点('.')、下划线('_')和连字符('-')。

    3. 版本字段的值设0.0.1-SNAPSHOT或类似的值。有关合适的版本构建编号的详细信息,请参阅项目版本

    4. 打包字段的值设为pom

    5. (可选)在名称字段中,为你的项目添加一个名称。

    6. (可选)在说明字段中,为你的项目添加说明。

      Configure Project Details
      图 2. 配置项目详细信息
    7. 单击完成以结束新的 Maven 项目创建向导。

结果:你的新 Maven 项目已创建,并显示在项目资源管理器视图中。

2. 创建一个新的 Maven 模块

具有打包 pom 的每个 Maven 项目可以包含多个 Maven 模块。按照说明创建你的第一个 Maven 模块

先决条件

  1. 必须拥有现成的 Maven 项目,且其打包类型为 pom。请参阅 创建一个新的 Maven 项目,了解创建新 Maven 项目的说明。

创建一个新的 Maven 模块

  1. 按照以下步骤,创建一个新的 Maven 模块

    1. 在项目资源管理器视图中,右键单击最近创建的 pom 项目并选择 新建  项目

    2. 在向导选择屏幕中,展开 Maven 并选择 Maven 模块

    3. 单击 下一步 > 以继续。

  2. 输入初始模块详情

    1. 确保未选中 创建简单项目(跳过原型选择) 复选框。如果选中此复选框,则会跳过向导的 选择一个原型 步骤。

    2. 模块名称 字段中,输入所需的模块名称。此值对应于 Maven 项目的项目 ID。

    3. 使用 浏览 按钮,找到并选择所需的父项目。

    4. 如果有需要,可以使用以下可选步骤进行进一步配置

      1. (可选)勾选将项目(项目)添加到工作集复选框将新创建的项目添加到工作集中。

      2. (可选)单击高级查看新 Maven 项目的更多可选高级配置,例如

        1. 解决工作区项目:以工作区项目打开的依赖项将得以解决,不必先安装到本地 Maven 仓库。通过这种方式,对其中一个依赖项所做的任何更改都将立即影响消耗它的其他项目(编译、重构等)。禁用解决工作区项目后,必须在进行任何更改(通过运行mvn install)后将存在于工作区中的依赖关系安装到本地 Maven 仓库,才能看到消耗它的项目产生的影响。

        2. 配置文件:选择要在工作区激活或停用的 Maven 配置文件集。配置文件在项目pom.xml中定义,或从父级pom.xml继承,或在相关的settings.xml文件中定义。

        3. 名称模板:允许你在工作区中通过在前缀或后缀添加组 ID 或 SCM 分支名称来消除项目名称歧义,以用于默认项目 ID。

          Set the Module Name and Parent
          图 3. 设置模块名称和父项目
    5. 完成配置后,单击下一步继续。

  3. 输入模块原型信息

    1. 确保已选中 仅显示原型的最新版本 复选框。此操作可确保仅显示每个原型的最新版本。

    2. 根据您正创建的项目的用途,选择一个原型。在 筛选器 字段中使用关键字 maven-archetype-quickstart 来找到一个示例 Maven 项目原型。

      Select a Module Archetype
      图 4. 选择模块原型
    3. 单击下一步以继续。

  4. 输入模块详情

    1. 将用于 Maven 项目的相同组 ID 值添加到 组 ID 字段。

    2. 版本 字段中,添加所需的版本号。有关适当版本生成号的详细信息,请参阅 项目版本

    3. 基于父项目详情,会自动填充 人工制品 ID软件包 字段。

      Configure the Module Archetype Parameters
      图 5. 配置模块原型参数
    4. 单击 完成 以结束 Maven 模块设置。

  5. (可选)要更改已创建的 Maven 模块的设置,请在 项目资源管理器 视图中展开模块名称,然后从展开的列表中双击 pom.xml。会显示一个 概述 选项卡,所有设置都可以从此选项卡更改。

    Change the Module Settings from the Overview View
    图 6. 从概述视图中更改模块设置

    结果: 新建的 Maven 模块将在 项目资源管理器 视图中创建并显示。此外,现在可以在项目资源管理器视图中查看嵌套项目的层次结构视图(请参阅 项目的嵌套/层次结构视图)。

3. 向现有的非 Maven 项目添加 Maven 支持

在之前的任务中包含创建新的 Maven 项目和 Maven 模块的说明。但是,对于未通过 Maven 支持创建的现有应用程序,请使用以下说明将 Maven 支持添加到非 Maven 项目

向现有非 Maven 项目添加 Maven 支持

  1. 右键单击 Project Explorer 视图中的项目名称。

  2. 从显示的选项中,单击 Configure

  3. 从显示的子菜单中,单击 Convert to Maven Project

  4. 为新的 pom 文件配置详细信息

    1. 新的 pom 文件的基本字段会根据项目详细信息进行预填充。如果需要,可以编辑现有值。

    2. (可选) 在 Name 字段中添加新项目名称。

    3. (可选) 在 Description 字段中添加项目的简短描述。

      Create a New Pom Descriptor
      图 7. 创建新的 Pom 描述符
    4. 单击 Finish 确定 pom 信息。

  5. 如果项目引用 java 依赖项,则会显示一个向导,显示所有这些依赖项,以及在识别每个依赖项时显示绿色的对号。在 Did You Know 部分中了解有关依赖项识别的更多信息。

  6. 选中 Delete original references from project 复选框以避免在项目中保留重复或过期的依赖项。

    Identify Maven Dependencies
    图 8. 识别 Maven 依赖项
  7. 转换所有依赖项后,单击 Finish

结果:现有项目现在配置为使用 Maven 支持。

您知道吗?

  • 用于将非 Maven 项目转换为 Maven 项目的向导会尝试识别项目的所有类路径项及其等效 Maven 依赖项。从已识别依赖项的列表中,用户可以选择将哪些依赖项添加到生成的 Maven pom.xml 文件。在识别依赖项时,可以使用以下几种策略

    • 检查 jar 是否包含相关 Maven 元数据。

    • 使用 Nexus 索引器识别依赖项。

    • 如果我们联机,则使用 JBoss Nexus 实例 REST API(通过 SHA1 搜索)识别依赖项。

    • 如果我们联机,则使用 search.maven.org REST API(通过 SHA1 搜索)识别依赖项。

  • 所有未选中的依赖项都将被忽略,不会添加到生成的 pom.xml 中。但是,其中一些可以作为传递依赖项添加到项目中。例如,如果添加 jsp-api 但删除 servlet-api,后者会出现在项目类路径中,因为它是 jsp-api 的依赖项。

  • 您可以双击列表中的依赖项(或单击 Edit 按钮)来编辑其 Maven 坐标或范围。选择多个依赖项(ctrl+单击)并单击 Edit 按钮允许批量编辑其范围。

故障排除

  1. 错误信息:Maven Dependency 列中的 Unidentifiable Dependency

    Unidentifiable Dependency
    图 9. 无法识别的依赖项
    1. 问题:

      1. jar 文件已损坏/无效。

      2. jar 文件有效,但未包含任何用于识别的元数据。

    2. 解决方案

      1. 确保 jar 存在于 Maven 工件中。如果需要,你可以 将其安装到你的本地存储库,然后单击识别依赖项按钮。

      2. 双击该依赖项,或单击编辑...按钮并设置预期 Maven 坐标。

  2. 错误消息:无法解决一些选定的依赖项。单击此处以在你的 settings.xml 中配置存储库。

    Dependencies Can Not Be Resolved Error
    图 10. 无法解决依赖项错误
    1. 问题:当依赖项可识别(即包含 pom 属性或其他元数据)时,但该依赖项在你的 settings.xml 中定义的任何存储库中不可用时,显示此错误。

    2. 解决方案:单击错误消息中的此处链接并比较该依赖项的旧设置和新设置,然后添加一个新的正确存储库。用户可以选择使用红帽提供的预定义存储库之一。

返回顶部