第 2 章 在 JBoss EAP 中使用 Maven
2.1. 了解 Maven
2.1.1. 关于 Maven 存储库
Apache Maven 是 Java 应用程序开发中使用的分布式构建自动化工具,用于创建、管理和构建软件项目。Maven 使用名为 Project Object Model 或 POM 文件的标准配置文件来定义项目并管理构建流程。poms 描述模块和组件依赖项,使用 XML 文件描述生成的项目打包和输出的构建顺序和目标。这可确保以正确、一致的方式构建项目。
Maven 使用存储库可实现此目的。Maven 存储库存储 Java 库、插件和其他构建构件。默认公共存储库是 Maven 2 Central Repository,但存储库可以是私有和内部存储库,目标为在开发团队之间共享通用工件。也可从第三方获取存储库。JBoss EAP 包括一个 Maven 存储库,其中包含 Jakarta EE 开发人员通常用于在 JBoss EAP 上构建应用程序的许多要求。若要将项目配置为使用此存储库,请参阅 配置 JBoss EAP Maven 存储库。
有关 Maven 的更多信息,请参阅 Welcome to Apache Maven。
如需有关 Maven 存储库的更多信息,请参阅 Apache Maven Project - 存储库简介。
2.1.2. 关于 Maven POM 文件
					Project Object Model 或 POM 文件是 Maven 用于构建项目的配置文件。这是一个 XML 文件,其中包含项目的信息以及如何构建项目,包括源位置、测试和目标目录的位置、项目依赖项、插件存储库及其可执行的目标。它还可以包含有关项目的其他详细信息,包括版本、描述、开发人员、邮件列表、许可证等。pom.xml 文件需要一些配置选项,并将默认为所有其他选项。
				
					pom.xml 文件的 schema 可以在 http://maven.apache.org/maven-v4_0_0.xsd 找到。
				
有关 POM 文件的更多信息,请参阅 Apache Maven Project POM 参考。
Maven POM 文件的最低要求
					pom.xml 文件的最低要求如下:
				
- 项目根目录
- modelVersion
- GroupId - 项目组的 ID
- artifactId - 工件的 ID(项目)
- Version - 指定组下的工件版本
示例:基本 pom.xml 文件
						基本的 pom.xml 文件可能类似如下:
					
2.1.3. 关于 Maven 设置文件
					Maven settings.xml 文件包含 Maven 的特定用户配置信息。它包含的信息不得通过 pom.xml 文件分发,如开发人员身份、代理信息、本地存储库位置,以及特定于用户的其他设置。
				
					有两个位置可以找到 settings.xml :
				
- 
							在 Maven 安装中: 设置文件可以在 $M2_HOME/conf/目录中找到。这些设置称为全局设置。默认的 Maven 设置文件是可复制的模板,并用作用户设置文件的起点。
- 
							在用户安装中: 设置文件可以在 ${user.home}/.m2/目录中找到。如果 Maven 和用户settings.xml文件都存在,则内容将合并。如果存在重叠,用户的settings.xml文件优先。
示例:Maven 设置文件
					settings.xml 文件的 schema 可在 http://maven.apache.org/xsd/settings-1.0.0.xsd 找到。
				
2.1.4. 关于 Maven Repository Manager
存储库管理器是一种可让您轻松管理 Maven 存储库的工具。存储库管理器在多个方面很有用:
- 它们提供在您的组织和远程 Maven 存储库之间配置代理的功能。这带来了诸多优势,包括更快、更高效的部署,以及更高水平的控制由 Maven 下载的内容。
- 它们为您自己的构件提供部署目的地,允许整个企业的不同开发团队相互协作。
有关 Maven 存储库管理器的更多信息,请参阅 最佳实践 - 使用存储库管理器。
常用的 Maven 存储库管理器
- Sonatype Nexus
- 有关 Nexus 的更多信息,请参阅 Sonatype Nexus 文档。
- Artifactory
- 有关 Artifactory 的更多信息,请参阅 JFrog Artifactory 文档。
- Apache Archiva
- 有关 Apache Archiva 的更多信息,请参阅 Apache Archiva:构建工件存储库管理器。
						在通常使用存储库管理器的企业环境中,Maven 应当使用此管理器查询所有项目的所有构件。由于 Maven 使用所有声明的存储库来查找缺少的工件,如果无法找到它查找的内容,它将尝试在存储库中 ( 内置父级 POM 中定义的)中查找它。要覆盖此 中央 位置,您可以使用 central 添加定义,以便默认存储库 中央 现在是您的存储库管理器。这非常适用于已建立的项目,但对于清洁或"新"项目,这会导致问题,因为它会造成问题,因为它会造成对已建立的 依赖项。