一、理解Maven
Maven是一个开源的项目管理工具,主要用于构建和管理Java项目、依赖管理和文档生成,它可以自动下载所需的依赖库,并自动构建整个项目。理解Maven需要了解以下几个方面:
1. 项目对象模型(Project Object Model,POM):Maven使用POM来描述项目的结构和依赖关系。POM是一个XML文件,包含了项目的元数据信息,如项目的组织结构、依赖项、构建配置等。
2. 项目生命周期(Build Lifecycle):Maven定义了一套标准的构建生命周期,包括了clean、validate、compile、test、package、install和deploy等阶段。每个生命周期阶段都包含了一系列的插件目标,用于执行相应的任务。
3. 依赖管理:Maven能够自动下载和管理项目的依赖项。通过在POM文件中定义依赖项,Maven可以自动下载所需的库文件,并将其添加到项目的类路径中。
4. 插件机制:Maven的插件机制使得可以通过插件来扩展和定制构建过程。Maven提供了大量的常用插件,如编译插件、测试插件、打包插件等。同时,也可以编写自定义的插件来满足特定需求。
5. 构建过程和目录结构:Maven的构建过程是基于约定的,即项目的源代码和资源文件应该按照特定的标准目录结构进行组织。这样做可以使得构建过程更加简洁和可靠。
Maven是一个强大的项目管理工具,能够简化和规范Java项目的构建和管理过程。通过了解上述几个方面,可以更好地理解和使用Maven。
二、Maven 对 Java JDK 版本的要求
Maven 3.x.x 版本需要JDK 1.7及以上版本,Maven 2.x.x版本需要JDK 1.4及以上版本,Maven 1.x.x版本需要JDK 1.3及以上版本。
三、检测自己电脑java jdk的版本
JAVA_HOME指明JDK安装路径,此路径下包括lib,bin等文件夹
echo %java_home%
查看java版本
java -version
查看已安装的 Java 编译器(JDK)的版本号
在命令行中运行javac -version将显示当前安装的 JDK 的版本号。这个命令用于检查 JDK 是否正确安装并确定版本号,以确保可以编译和运行 Java 程序。
javac -version
四、JDK Release Notes
可以看到jdk版本已经到了21
JDK Release Notes
五、下载Maven
5.1、下载
Maven – Download Apache Maven
5.2、下载完成后,将安装文件解压到指定的目录下
5.3、设置环境变量
5.3.1、找到环境变量
此电脑--右键属性--高级系统设置--环境变量
5.3.2、设置Maven_Home环境变量
新建系统变量
变量名:Maven_Home
变量值:D:\software\maven\apache-maven-3.9.6
5.3.3、修改Path变量值
增加: %Maven_Home%\bin
5.3.4、设置MAVEN_OPTS环境变量
Xms和-Xmx:这些选项用于设置JVM的初始堆大小和最大堆大小。通过调整这些值,您可以更好地管理Maven在构建项目时所需的内存。
变量名:MAVEN_OPTS
变量值:-Xms128m -Xmx512m
5.3.5、检测maven安装
安装成功
5.3.6、mvn help:system
......
mvn help:system是Maven命令的一个子命令,用于显示有关Maven系统环境的详细信息。执行该命令会输出关于Maven版本、Java版本、操作系统信息以及其他相关系统属性的信息。这些信息可以帮助您诊断和调试与构建相关的问题。
输出的信息包括:
Maven版本:Maven的版本号。
Java版本:运行Maven的Java版本号。
操作系统信息:运行Maven的操作系统名称和版本。
JVM信息:运行Maven的Java虚拟机名称和版本。
默认本地仓库:Maven默认的本地仓库路径。
Java Home:Java安装路径。
Java Classpath和Java Library Path:Java类路径和Java库路径。
系统属性:Maven执行期间设置的系统属性列表。
这些信息对于排查构建问题、检查环境配置以及确定Maven和Java版本的兼容性非常有用。
5.3.7、待补充
六、Maven 命令速查表
| 阶段 | 命令 | 作用 | 常用场景 |
|---|---|---|---|
| 清理 | mvn clean | 删除target/目录 | 重新构建前必做 |
| 编译 | mvn compile | 编译主代码到target/classes | 只编译不打包 |
| 测试编译 | mvn test-compile | 编译测试代码到target/test-classes | 单独编译测试 |
| 测试 | mvn test | 运行单元测试 | 提交代码前验证 |
| 打包 | mvn package | 编译+测试+打包(jar/war) | 生成可部署包 |
| 安装 | mvn install | 打包后安装到本地仓库~/.m2 | 多模块项目依赖 |
| 部署 | mvn deploy | 安装到远程私服(Nexus/Artifactory) | 发布到团队仓库 |
| 验证 | mvn verify | 运行集成测试验证包 | CI/CD 流水线 |
| 站点 | mvn site | 生成项目文档站点 | 项目文档发布 |
| 场景 | 命令 | 说明 |
|---|---|---|
| 跳过测试 | mvn clean install -DskipTests | 编译+安装,不运行测试 |
| 跳过测试编译 | mvn clean install -Dmaven.test.skip=true | 连测试代码都不编译,最快 |
| 离线构建 | mvn clean install -o | 不从远程下载依赖(用本地缓存) |
| 指定 JDK | mvn clean install -Dmaven.compiler.source=11 -Dmaven.compiler.target=11 | 强制编译版本 |
| 多模块构建 | mvn clean install -pl moduleA,moduleB -am | -pl指定模块,-am同时构建依赖 |
| 单个模块 | mvn clean install -pl moduleA | 只构建指定模块 |
| 并行构建 | mvn clean install -T 4 | 4 线程并行,大幅加速 |
| 强制更新 SNAPSHOT | mvn clean install -U | 强制检查远程 SNAPSHOT 依赖 |
| quiet 模式 | mvn clean install -q | 减少输出,只显示错误 |
| debug 模式 | mvn clean install -X | 打印详细 debug 信息 |
| 指定 settings | mvn clean install -s /path/to/settings.xml | 用自定义配置(如私服认证) |
| 指定 POM | mvn -f pom-custom.xml clean install | 用非默认 POM 文件 |
| 依赖管理 | 命令 | 作用 |
|---|---|---|
| 查看依赖树 | mvn dependency:tree | 🔍 排查依赖冲突最常用 |
| 查看依赖树(过滤) | mvn dependency:tree -Dincludes=groupId:artifactId | 只看某个依赖 |
| 下载源码 | mvn dependency:sources | 下载依赖的源码 jar |
| 下载 JavaDoc | mvn dependency:resolve -Dclassifier=javadoc | 下载 JavaDoc |
| 清除本地缓存 | mvn dependency:purge-local-repository | 清理本地仓库重新下载 |
| 复制依赖 | mvn dependency:copy-dependencies -DoutputDirectory=target/lib | 把依赖 jar 复制到指定目录 |
| 分析未使用依赖 | mvn dependency:analyze | 🔍 找出多余依赖 |
| 插件常用命令 | 命令 | 作用 |
|---|---|---|
| 指定 Maven 版本 | mvn -v/mvn --version | 查看 Maven/JDK/OS 版本 |
| 生成 Eclipse 配置 | mvn eclipse:eclipse | 生成.project.classpath |
| 生成 IDEA 配置 | mvn idea:idea | 生成.iml文件 |
| 版本升级 | mvn versions:set -DnewVersion=2.0.0 | 批量修改版本号 |
| 查看可用更新 | mvn versions:display-dependency-updates | 查看哪些依赖有新版本 |
| 查看插件更新 | mvn versions:display-plugin-updates | 查看哪些插件有新版本 |
| 运行主类 | mvn exec:java -Dexec.mainClass="com.example.Main" | 不打包直接运行 |
| Spring Boot 运行 | mvn spring-boot:run | 热启动开发 |
| Tomcat 部署 | mvn tomcat7:deploy | 部署 war 到 Tomcat |
| 生命周期完整流程 | 等价于 |
|---|---|
mvn clean→mvn compile→mvn test→mvn package→mvn install→mvn deploy | mvn clean deploy |
一句话记住:
clean清理 →compile编译 →test测试 →package打包 →install装本地 →deploy发远程。
⚡ 最高频 5 条命令
| 排名 | 命令 | 使用频率 |
|---|---|---|
| 1 | mvn clean install -DskipTests | ⭐⭐⭐⭐⭐ |
| 2 | mvn clean compile | ⭐⭐⭐⭐⭐ |
| 3 | mvn dependency:tree | ⭐⭐⭐⭐⭐ |
| 4 | mvn spring-boot:run | ⭐⭐⭐⭐ |
| 5 | mvn clean install -U | ⭐⭐⭐⭐ |
过程记录
记录一、Maven 与 POM
Maven:Maven本质上是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
POM:(Project Object Model):项目对象模型
记录二、安装jemeter需要maven环境吗
Maven是一个项目管理工具,主要用于项目的构建、依赖管理等,而jemeter是一个性能测试工具,两者并无直接关联。但是在进行性能测试时,可能会遇到需要使用到某些jar包,而该jar包需要使用Maven进行下载和管理,因此安装jemeter需要maven环境。
参考链接
黑马程序员Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具maven_哔哩哔哩_bilibili
MAVEN的安装与配置教程(超详细版)_maven安装及配置教程-CSDN博客
Maven的安装与配置_maven安装-CSDN博客
Maven安装与配置图文教程_java_脚本之家
Maven – Download Apache Maven
Maven学习(3)Maven的依赖管理_maven依赖管理_angelbabyfalse的博客-CSDN博客