在应用程序开发中,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
之外的其他选项。
-
创建一个新的项目
-
在工作区中,导航至
。 -
在
过滤
字段中键入maven
,然后选择Maven 项目
。 -
单击
下一步
以继续。
-
-
输入项目的初始详细信息
-
选中
创建简单项目(跳过原型选择)
复选框。如果选中了此复选框,那么向导的选择一个原型
步骤将被跳过,并且项目类型将设置为 pom,这是基于此 Maven 项目创建一个 Maven 模块所必需的。或者,要创建一个独立的项目,请取消选中创建简单项目(跳过原型选择)
复选框,然后按照向导中的说明进行操作。 -
确保未勾选
使用默认工作区位置
复选框,并使用浏览
按钮为工作区文件指定非默认位置。建议使用非默认工作区位置,因为这样其他工具可以轻松访问工作区位置。 -
如果有需要,可以使用以下可选步骤进行进一步配置
-
(可选)勾选
将项目(项目)添加到工作集
复选框将新创建的项目添加到工作集中。 -
(可选)单击
高级
查看新 Maven 项目的更多可选高级配置,例如-
解决工作区项目
:以工作区项目打开的依赖项将得以解决,不必先安装到本地 Maven 仓库。通过这种方式,对其中一个依赖项所做的任何更改都将立即影响消耗它的其他项目(编译、重构等)。禁用解决工作区项目
后,必须在进行任何更改(通过运行mvn install
)后将存在于工作区中的依赖关系安装到本地 Maven 仓库,才能看到消耗它的项目产生的影响。 -
配置文件
:选择要在工作区激活或停用的 Maven 配置文件集。配置文件在项目pom.xml
中定义,或从父级pom.xml
继承,或在相关的settings.xml
文件中定义。 -
名称模板
:允许你在工作区中通过在前缀或后缀添加组 ID 或 SCM 分支名称来消除项目名称歧义,以用于默认项目 ID。图 1. 创建新的 Maven 项目
-
-
-
完成配置后,单击
下一步
继续。
-
-
配置项目详细信息
-
在
组 ID
字段中输入所需的组 ID,它类似于组织命名空间(例如,com.company.businessunit.project)。 -
在
项目 ID
字段中输入所需的项目 ID 值,它是你项目的名称。此值不得包含任何空格,仅允许使用的特殊字符为句点('.')、下划线('_')和连字符('-')。 -
将
版本
字段的值设0.0.1-SNAPSHOT
或类似的值。有关合适的版本构建编号的详细信息,请参阅项目版本 -
将
打包
字段的值设为pom
。 -
(可选)在
名称
字段中,为你的项目添加一个名称。 -
(可选)在
说明
字段中,为你的项目添加说明。图 2. 配置项目详细信息 -
单击
完成
以结束新的 Maven 项目创建向导。
-
结果:你的新 Maven 项目已创建,并显示在项目资源管理器
视图中。
2. 创建一个新的 Maven 模块
具有打包 pom 的每个 Maven 项目可以包含多个 Maven 模块。按照说明创建你的第一个 Maven 模块
先决条件
-
必须拥有现成的 Maven 项目,且其打包类型为 pom。请参阅 创建一个新的 Maven 项目,了解创建新 Maven 项目的说明。
创建一个新的 Maven 模块
-
按照以下步骤,创建一个新的 Maven 模块
-
在项目资源管理器视图中,右键单击最近创建的 pom 项目并选择
。 -
在向导选择屏幕中,展开
Maven
并选择Maven 模块
。 -
单击
下一步 >
以继续。
-
-
输入初始模块详情
-
确保未选中
创建简单项目(跳过原型选择)
复选框。如果选中此复选框,则会跳过向导的选择一个原型
步骤。 -
在
模块名称
字段中,输入所需的模块名称。此值对应于 Maven 项目的项目 ID。 -
使用
浏览
按钮,找到并选择所需的父项目。 -
如果有需要,可以使用以下可选步骤进行进一步配置
-
(可选)勾选
将项目(项目)添加到工作集
复选框将新创建的项目添加到工作集中。 -
(可选)单击
高级
查看新 Maven 项目的更多可选高级配置,例如-
解决工作区项目
:以工作区项目打开的依赖项将得以解决,不必先安装到本地 Maven 仓库。通过这种方式,对其中一个依赖项所做的任何更改都将立即影响消耗它的其他项目(编译、重构等)。禁用解决工作区项目
后,必须在进行任何更改(通过运行mvn install
)后将存在于工作区中的依赖关系安装到本地 Maven 仓库,才能看到消耗它的项目产生的影响。 -
配置文件
:选择要在工作区激活或停用的 Maven 配置文件集。配置文件在项目pom.xml
中定义,或从父级pom.xml
继承,或在相关的settings.xml
文件中定义。 -
名称模板
:允许你在工作区中通过在前缀或后缀添加组 ID 或 SCM 分支名称来消除项目名称歧义,以用于默认项目 ID。图 3. 设置模块名称和父项目
-
-
-
完成配置后,单击
下一步
继续。
-
-
输入模块原型信息
-
确保已选中
仅显示原型的最新版本
复选框。此操作可确保仅显示每个原型的最新版本。 -
根据您正创建的项目的用途,选择一个原型。在
筛选器
字段中使用关键字 maven-archetype-quickstart 来找到一个示例 Maven 项目原型。图 4. 选择模块原型 -
单击下一步以继续。
-
-
输入模块详情
-
将用于 Maven 项目的相同组 ID 值添加到
组 ID
字段。 -
在
版本
字段中,添加所需的版本号。有关适当版本生成号的详细信息,请参阅 项目版本 -
基于父项目详情,会自动填充
人工制品 ID
和软件包
字段。图 5. 配置模块原型参数 -
单击
完成
以结束 Maven 模块设置。
-
-
(可选)要更改已创建的 Maven 模块的设置,请在
项目资源管理器
视图中展开模块名称,然后从展开的列表中双击pom.xml
。会显示一个概述
选项卡,所有设置都可以从此选项卡更改。图 6. 从概述视图中更改模块设置结果: 新建的 Maven 模块将在
项目资源管理器
视图中创建并显示。此外,现在可以在项目资源管理器视图中查看嵌套项目的层次结构视图(请参阅 项目的嵌套/层次结构视图)。
3. 向现有的非 Maven 项目添加 Maven 支持
在之前的任务中包含创建新的 Maven 项目和 Maven 模块的说明。但是,对于未通过 Maven 支持创建的现有应用程序,请使用以下说明将 Maven 支持添加到非 Maven 项目
向现有非 Maven 项目添加 Maven 支持
-
右键单击
Project Explorer
视图中的项目名称。 -
从显示的选项中,单击
Configure
。 -
从显示的子菜单中,单击
Convert to Maven Project
。 -
为新的 pom 文件配置详细信息
-
新的 pom 文件的基本字段会根据项目详细信息进行预填充。如果需要,可以编辑现有值。
-
(可选) 在
Name
字段中添加新项目名称。 -
(可选) 在
Description
字段中添加项目的简短描述。图 7. 创建新的 Pom 描述符 -
单击
Finish
确定 pom 信息。
-
-
如果项目引用 java 依赖项,则会显示一个向导,显示所有这些依赖项,以及在识别每个依赖项时显示绿色的对号。在 Did You Know 部分中了解有关依赖项识别的更多信息。
-
选中
Delete original references from project
复选框以避免在项目中保留重复或过期的依赖项。图 8. 识别 Maven 依赖项 -
转换所有依赖项后,单击
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
按钮允许批量编辑其范围。
故障排除
-
错误信息:
Maven Dependency
列中的Unidentifiable Dependency
。图 9. 无法识别的依赖项-
问题:是
-
jar 文件已损坏/无效。
-
jar 文件有效,但未包含任何用于识别的元数据。
-
-
解决方案
-
确保 jar 存在于 Maven 工件中。如果需要,你可以 将其安装到你的本地存储库,然后单击
识别依赖项
按钮。 -
双击该依赖项,或单击
编辑...
按钮并设置预期 Maven 坐标。
-
-
-
错误消息:无法解决一些选定的依赖项。单击此处以在你的 settings.xml 中配置存储库。
图 10. 无法解决依赖项错误-
问题:当依赖项可识别(即包含 pom 属性或其他元数据)时,但该依赖项在你的 settings.xml 中定义的任何存储库中不可用时,显示此错误。
-
解决方案:单击错误消息中的
此处
链接并比较该依赖项的旧设置和新设置,然后添加一个新的正确存储库。用户可以选择使用红帽提供的预定义存储库之一。
-