Maven 简单了解

一、Maven基本概念

Maven是一个项目管理和构建自动化工具,通过标准化项目结构、依赖管理和构建流程,简化开发、测试、打包和部署的复杂性。


二、核心功能

2.1、依赖管理

自动下载和管理第三方库:通过中央仓库(eg.镜像阿里云)自动下载项目所需要的依赖(eg. JAR文件),避免手动管理

依赖传递:自动解析依赖的依赖(传递性依赖),解决版本冲突。

坐标系统:通过groupId、artifactId、version 唯一标识一个依赖

2.2、标准化构建生命周期

Maven 定义了一套固定的构建生命周期,通过命令触发不同阶段的自动化操作:

主要生命周期阶段:

  • **clean:**清理编译生成文件
  • **compile:**编译源码
  • **test:**运行单元测试(eg. JUnit)
  • **package:**打包 JAR/WAR 文件
  • **install:**将构建结果安装到本地仓库
  • **depoly:**将构建结果部署到远程仓库

2.3、项目结构标准化

Maven 强制约定项目的目录结构

复制代码
src/
  main/
    java/     # 主代码
    resources/ # 配置文件
  test/
    java/     # 测试代码
pom.xml        # 项目配置文件

!!!约定大于配置!!!

2.4、插件机制

Maven 的功能通过插件实现,例如:

  • maven-compiler-plugin:指定 Java 编译版本。

  • maven-surefire-plugin:运行单元测试。

  • maven-assembly-plugin:生成自定义打包文件。


三、核心概念

3.1 POM(Project Object Model)

3.1.1 pom.xml

Maven项目的核心配置文件。 定义了项目信息、依赖、构建规则等等。

3.1.2 坐标(coordinates)

唯一标识项目或依赖的三个属性

eg.

XML 复制代码
<groupId>com.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0.0</version>

3.2 仓库(Repository)

本地仓库:

本地磁盘上的目录,缓存下载的依赖。

远程仓库:

中央仓库:默认的公共仓库。

**私有仓库:**企业自建仓库,加速依赖下载并托管私有库。

3.3 依赖范围(Scope)

控制依赖在构建不同阶段的作用范围:

**compile(默认):**编译、测试、运行都有效。

**test:**测试阶段有效(JUnit)。

**provided:**有运行环境提供(如 Servlet API)。

**runtime:**运行时需要,但编译时不需要(如 JDBC驱动)。

3.4 多模块项目管理

支持将大项目拆分成多个子模块,通过父POM统一管理依赖和配置

XML 复制代码
<modules>
  <module>module1</module>
  <module>module2</module>
</modules>

四、Maven经典工作流程

1、初始化项目

使用 mvn archetype:generate 生成标准项目结构。

2、编辑 pom.xml

添加依赖、插件和构建配置

3、运行构建命令

bash 复制代码
mvn clean install   # 清理并构建到本地仓库
mvn test            # 仅运行测试
mvn package         # 打包为 JAR/WAR

Maven 是 Java 生态的基石工具之一,通过约定优于配置(Convention Over Configuration)的理念,显著提升了项目的可维护性和开发效率。

相关推荐
wuhen_n几秒前
JavaScript内置数据结构
开发语言·前端·javascript·数据结构
不会代码的小测试3 分钟前
UI自动化-POM封装
开发语言·python·selenium·自动化
roman_日积跬步-终至千里9 分钟前
【Java并发】Java 线程池实战:警惕使用CompletableFuture.supplyAsync
java·开发语言·网络
毕设源码-钟学长11 分钟前
【开题答辩全过程】以 基于Springboot的扶贫众筹平台为例,包含答辩的问题和答案
java·spring boot·后端
lsx20240614 分钟前
C++ 基本的输入输出
开发语言
CodeSheep程序羊26 分钟前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展
独好紫罗兰27 分钟前
对python的再认识-基于数据结构进行-a002-列表-列表推导式
开发语言·数据结构·python
I'mChloe35 分钟前
PTO-ISA 深度解析:PyPTO 范式生成的底层指令集与 NPU 算子执行的硬件映射
c语言·开发语言
编程小白20261 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
我是咸鱼不闲呀1 小时前
力扣Hot100系列19(Java)——[动态规划]总结(上)(爬楼梯,杨辉三角,打家劫舍,完全平方数,零钱兑换)
java·leetcode·动态规划