第 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
文件可能类似如下:
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.jboss.app</groupId> <artifactId>my-app</artifactId> <version>1</version> </project>
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 设置文件
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <profiles> <!-- Configure the JBoss EAP Maven repository --> <profile> <id>jboss-eap-maven-repository</id> <repositories> <repository> <id>jboss-eap</id> <url>file:///path/to/repo/jboss-eap-7.3.0.GA-maven-repository/maven-repository</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>jboss-eap-maven-plugin-repository</id> <url>file:///path/to/repo/jboss-eap-7.3.0.GA-maven-repository/maven-repository</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <!-- Optionally, make the repository active by default --> <activeProfile>jboss-eap-maven-repository</activeProfile> </activeProfiles> </settings>
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
添加定义,以便默认存储库 中央
现在是您的存储库管理器。这非常适用于已建立的项目,但对于清洁或"新"项目,这会导致问题,因为它会造成问题,因为它会造成对已建立的 依赖项
。