【工具】Maven的下载、安装、使用

Maven的下载、安装、使用

一、为什么需要使用Maven呢?

场景一:新建项目

没有Maven,程序员的操作:

有Maven,程序员的操作:

场景二:项目缺少依赖jar包

没有Maven,程序员的操作:

有Maven,程序员的操作:

场景三:项目从源码到部署到服务器

没有Maven,程序员的操作:

有Maven,程序员的操作:


对比总览

无 Maven 有 Maven
场景一:新建项目 手动建目录 + 手工下载每个 jar + 处理传递依赖 + 配 classpath mvn archetype:generate 或写 pom.xml,自动搞定一切
复杂度 高(7 步起) 低(2 步)
耗时 半天起步 几分钟
场景二:缺少依赖 搜索引擎找 jar → 下载 → 发现缺传递依赖 → 继续找 → 版本冲突试错 pom.xml 加一行 <dependency>,Maven 自动下载所有连带依赖
复杂度 高(地狱级传递依赖追踪) 低(一行 XML)
耗时 30 分钟到数小时 10 秒
场景三:源码到部署 javac 编译 → 手动跑测试 → jar 打包 → 写 MANIFEST → scp 上传 → 每次重复 mvn clean package → 编译测试打包一条命令 → 失败自动中断
复杂度 高(6 步,全手动) 低(1 条命令)
耗时 每次 10 分钟 + 易出错 每次 30 秒,可靠可重复

核心差异就三个词

  • 规范化 ------ 项目结构、构建流程全行业统一,换公司换项目,目录结构不变
  • 自动化 ------ 依赖解析、传递依赖、版本冲突、编译测试打包,全由 Maven 搞定
  • 可重复 ------ 今天能跑、明天能跑、同事电脑上也能跑,CI/CD 流水线也能跑

没有 Maven 的年代,每个 Java 项目的 lib/ 文件夹都是一个手工维护的噩梦。Maven 把这件脏活累活变成了自动化的基础能力。

结论:

使用Maven,规范化、自动化、可重复。Maven把编码之外的重复性、流程性工作封装起来,对程序员暴露简单易用的入口。使用Maven可以大大节省程序员的时间,降低交付流程的复杂度。 不止暴露给程序员,也可以暴露给自动化构建工具,例如Jenkins,它们配合完成自动化部署。

二、Maven的下载与安装

(一)图形界面操作(Mac)

1. 下载

去哪里下载呢?

官网:https://maven.apache.org/download.cgi

下载哪个包呢?

当前最新版本是3.9.16。

我的笔记本是mac,所以下载"apache-maven-3.9.16-bin.tar.gz"。

下载的是什么呢?

下载的是Maven编译过后的二进制文件.class文件。下载后解压可以看到目录:

Maven安装包解压后的目录结构,各个包的作用,包下面放的是什么?

先看一下 README.txt

Maven二进制包目录结构说明

了解到Maven是由Java语言编写的项目管理工具。要想使用Maven,需要jdk环境,(如果拿到的是Maven的source源码,就需要对Maven的源码进行编译、运行)。目前我拿到的是二进制文件(编译过的)可在jdk环境配好的情况下直接运行。

配置Maven运行环境的过程就是Maven的安装过程。

2. 安装

  1. 安装到电脑的什么目录下?为什么?
    只要安装到没有中文,没有空格,没有括号的路径下即可。
    根本原因:脚本和 Java 对特殊字符的处理很脆弱。中文、空格、括号,会当特殊字符处理。
  2. 安装怎么理解?实际是做了什么操作?
    安装是做了一些配置,让操作系统可以识别Maven的存在,可以接入Maven。还配了一些JVM的路径,远程仓库的路径、等,让Maven可以使用JVM、可以主动去远程仓库拉取jar包。
    安装没有编译、写注册表这些内容,因为,二进制包本身就是编译好的文件,可直接在JVM上运行。而写注册表是Windows上的操作,目的是为了记住Maven的路径,不够通用,Maven采用更通用的方式,配置path,让操作系统去寻找mvn的路径。
  3. 安装包括配置,配置项有哪些?要怎么配置?为什么要配置这些?
    (1) 安装Java:
    先检查是否已安装:
    terminal中输入
    java -version
    javac -version

为什装Java:因为Maven是Java编写的项目,运行需要JVM,所以需要安装JDK,那安装jre可以吗?能不能只安装jvm?

不能只装jvm,因为Maven启动项目需要java命令,而java命令属于jre。也不能只装jre,因为Maven的核心功能之一编译项目compile,需要使用javac命令,javac命令属于JDK。所以使用Maven必须安装JDK。

(AI回复:Maven 是 Java 编写的程序,因此运行 Maven 至少需要 JRE(包含 JVM);但 Maven 的核心用途是编译、测试、打包 Java 项目,而这些过程需要 JDK 提供的 javac 等开发工具,所以实际使用 Maven 时通常必须安装 JDK,而不是只安装 JRE。)

(2) 配置环境变量(配置MAVEN_HOME;配置PATH)(Mac/Linux):

编辑:

vim ~/.zshrc

添加:

export MAVEN_HOME=/Users/xxx/software/apache-maven-3.9.11

export PATH= M A V E N H O M E / b i n : MAVEN_HOME/bin: MAVENHOME/bin:PATH

刷新配置:

source ~/.zshrc

操作截图:

(3) 检查安装是否成功:

terminal中输入mvn -v,显示目标版本号即成功

  1. 安装时与其他软件有什么联系?
    依赖JDK,必须安装JDK。
    Maven是怎么跟IDEA关联起来的?为什么idea中可以使用Maven的功能?
    Maven还可以在什么地方使用?还跟什么软件有关系?
    Maven与命令行、终端terminal的关系是什么?
    Maven与idea的关系是什么?

3. 卸载

  1. 删除安装包
  2. 删除环境变量配置
    环境变量可能配置在
    ~/.bash_profile
    ~/.zshrc
    它们两个有什么关系?

(二)用命令行操作

1. 命令行安装 Maven

Maven 完全可以通过命令行下载和安装,而且很多 Linux 服务器就是这么做的。

Mac(Homebrew)

如果安装了 Homebrew:

bash 复制代码
brew install maven

查看:

bash 复制代码
mvn -version

输出类似:

text 复制代码
Apache Maven 3.9.x
Java version: 17

安装完成。


2. 纯命令行手动下载安装 Maven

假设不使用包管理器。

(1) 下载

可以从 Maven 官网获取压缩包:

Apache Maven Downloads

例如:

bash 复制代码
curl -O https://downloads.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz

(2) 解压
bash 复制代码
tar -zxvf apache-maven-3.9.11-bin.tar.gz

得到:

text 复制代码
apache-maven-3.9.11/

(3) 配置环境变量
bash 复制代码
vim ~/.zshrc

添加:

bash 复制代码
export MAVEN_HOME=$HOME/apache-maven-3.9.11
export PATH=$MAVEN_HOME/bin:$PATH

刷新:

bash 复制代码
source ~/.zshrc
(4) 验证:
bash 复制代码
mvn -version

3、命令行安装 Maven 的本质

无论是:

bash 复制代码
brew install maven

还是:

bash 复制代码
apt install maven

最终都在做类似的事情:

text 复制代码
下载 Maven 压缩包
      ↓
解压到某个目录
      ↓
配置 PATH
      ↓
获得 mvn 命令

所以 Maven 本质上仍然是一个"解压即用"的工具,只是包管理器帮你自动完成了这些步骤。

三、Maven的使用

Maven的使用在下篇文章中详解(传送门)。

相关推荐
2501_947575802 小时前
计算机毕业设计之jsp开山车行二手车交易系统
java·开发语言·hadoop·python·信息可视化·django·课程设计
骑士雄师2 小时前
java面试题 4:鉴权
java·开发语言
帅次3 小时前
Android 高级工程师面试:Java 基础知识 近1年高频追问 22 题
android·java·面试
蓝胖的四次元口袋3 小时前
Java集合(4)
java·哈希算法
2501_948106914 小时前
计算机毕业设计之基于jsp教科研信息共享系统
java·开发语言·信息可视化·spark·课程设计
TanYYF4 小时前
spring ai入门教程二
java·人工智能·spring
SeeYa-J4 小时前
Spring IOC(Inversion of Control)
java·spring·rpc
不会c+5 小时前
02-SpringBoot配置文件
java·spring boot·后端
AI 大模型学习不踩坑5 小时前
OpenClaw 完整教程:从安装到使用(官方脚本版)
java·人工智能·神经网络·机器学习·计算机视觉·自然语言处理·openclaw
Listen·Rain6 小时前
数据库流式查询
java·数据库