Maven 依赖项

2025 年 2 月 24 日 | 3 分钟阅读

一个 Maven 项目依赖于外部库或组件,这被称为 Maven 依赖,用于编译、构建和执行。在 Java 中,依赖通常打包为 Java 归档 (JAR) 文件,其中包含项目必需的已编译代码和资源。 pom.xml 文件概述了依赖关系,并充当 Maven 项目的项目对象模型 (POM)。

依赖的重要性

  • 模块化: 依赖允许模块化的项目结构,使其更易于管理。
  • 可维护性: 它们有助于保持项目的结构化和可管理。
  • 可重用性: 您可以选择使用外部库来增强功能,而无需从头开始。

Maven 依赖的类型

  1. 直接依赖: 使用 <dependency> 标签显式包含在您的项目中。
  2. 传递依赖: 当直接依赖需要时,Maven 会自动包含它。

Maven 如何处理依赖?

  • 在 Maven 构建期间,依赖项会从本地存储库解析和获取。
  • 如果需要,您可以手动安装依赖项。
  • 要列出所有项目和传递依赖项,请使用命令

使用 Maven 的优势

  • 项目管理: 管理构建、文档、发布和分发过程。
  • 性能: 改进构建过程和整体项目性能。
  • 环境一致性: 开发人员可以专注于代码,而无需担心不同环境下的依赖关系。
  • 易于添加依赖项: pom.xml 文件简化了添加新依赖项的过程。

pom.xml 中的依赖示例

Maven 依赖范围

Maven 依赖范围定义了 Maven 项目中依赖项的可见性和生命周期。 Maven 中有六种不同的依赖范围

1. Compile 范围

这是默认范围。 具有此范围的依赖项在所有类路径(编译、测试、运行时)中都可用,并打包到最终工件(JAR、WAR 等)中。

示例

2. Provided 范围

编译项目代码所需的依赖项,但期望由运行时环境提供。 这些依赖项不与工件一起打包。

3. Runtime 范围

执行源代码需要依赖项,但编译不需要。 它们包含在运行时类路径中,并打包到最终工件中。

4. Test 范围

依赖项仅在编译和运行测试时需要,而不是在生产代码中需要。

5. System 范围

从本地系统引用的依赖项,而不是从 Maven 存储库检索的依赖项。 通常不建议使用此范围,因为它绕过了 Maven 的依赖管理。

6. Import 范围

在 Maven 2.0.9 及更高版本中使用,此范围用于 POM 的依赖项管理部分中,以将依赖项管理信息从其他 POM 文件导入到当前项目中。

Maven 命令速查表

Maven 是 Java 开发的重要工具,可简化构建过程并增强项目管理。 本速查表涵盖安装、基本命令、依赖项管理、生命周期阶段、插件、高级命令、配置文件、优化技术和故障排除。

安装和设置

1.更新包索引

2. 安装 Maven

3. 验证安装

基本 Maven 命令

  • 创建新项目
  • 编译项目
  • 运行测试
  • 打包项目
  • 清理项目

Maven 生命周期阶段

命令描述
mvn validate验证项目。
mvn compile编译源代码。
mvn test使用测试框架运行测试。
mvn package将编译后的代码打包成可分发的格式(例如,JAR)。
mvn verify根据质量标准验证包。
mvn install将包安装到本地存储库中。
mvn deploy将包复制到远程存储库以进行共享。

Maven 插件

  • 编译器插件
  • Surefire 插件: 用于运行测试。
  • Javadoc 插件: 生成文档。
  • WAR 插件: 用于 Web 应用程序。

下一个主题Maven 面试题