Maven环境搭建及Maven部分目录分析

一、安装Maven

Maven 本身就是⼀套由 Java 开发的软件,所以 Maven 的运⾏需要依赖 JDK 环境。在安装 Maven 之前请 确认JDK 是否配置正确(主要依赖 JAVA_HOME 环境变量)。如果没有正确安装和配置 JDK ,则运⾏ Maven 时 会出现以下错误信息:
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
下载Maven 地址:http://maven.apache.org/download.html
检查JDK的安装情况
echo %JAVA_HOME%
java -version

对下载文件进行解压缩

设置系统环境变量
打开环境变量配置⾯板,新建变量如下:
变量名: M2_HOME
变量值: {Maven 的安装路径 } ,例如 C:\environment\apache-maven-3.6.3

接下来找到名为Path的系统环境变量,双击进⼊编辑,添加⼀条变量值:

配置完毕之后将所有⾯板点击**[确定]**关闭即可
测试安装结果
打开 CMD 命令⾏窗⼝,输⼊以下命令:
mvn -version

安装本地仓库
注意,本操作⾮必要。进⾏这项操作只是为了让⼤家操作项⽬更⽅便。
⾸先⼤致了解⼀下 Maven 管理依赖的⼤致流程和原理:
当需要使⽤某个依赖时,我们直接在配置⽂件中定义它的名称,⽆需⾃⼰到⽹上找资源
Maven 扫描到配置⽂件中的依赖声明,⾃动到 仓库 中查找
⾸先会到 本地仓库 中进⾏查找,如果存在则直接引⼊使⽤
本地仓库即⾃⼰磁盘中某个⽬录,会保存所有从远程仓库下载的依赖
如果本地仓库不存在,则会到 远程仓库 中进⾏查找
远程仓库指的是架设在某个远程服务器上的仓库,需要通过⽹络访问
如果在远程仓库中找到了该依赖,则会⾃动下载下来,安装到本地仓库中,然后再引⼊到项⽬中
如果远程仓库中也没有该依赖,则会报错
通过上述流程我们可以得知,当项⽬中需要使⽤某个依赖的时候,它只会直接从本地仓库进⾏查找。本地仓库中只要存在⽬标依赖,就可以引⼊进来使⽤。⾄于这个依赖是从何处得来的,并不重要。可以是从远程仓库下载的,也可以是从别⼈的电脑上复制得到的已有仓库内容。
我们已经把这个项⽬所需要⽤到的依赖完整下载好并打包,⼤家只要将解压出来的⽬录配置为⾃⼰的本地仓库,项 ⽬中即可直接使⽤,⽆需联⽹下载,这样可以节省⼤量的时间。
找到资源包中的 maven_repo.zip ⽂件,将其解压⾄ environment ⽬录。解压出来的这个路径,就是 本地仓库路 。 接下来,找到Maven 安装⽬录下的 conf/settings.xml⽂件,使⽤记事本打开该⽂件。改为刚才解压出来的 本地仓库路径 。修改完毕后保存并退出即可。

二、Maven目录介绍

bin目录 mvn.bat (以run方式运行项目)、 mvnDebug.bat(以debug方式运行项目 )

boot目录 maven运行需要类加载器

conf目录 settings.xml 整个maven工具核心配置文件

lib目录 maven运行依赖jar包

Maven安装目录分析

bin:含有mvn运行的脚本

boot:含有plexus-classworlds类加载器框架

conf:含有settings.xml配置文件

lib:含有Maven运行时所需要的java类库 LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

遵从Maven约定

src/main/java ------ 存放项目的.java文件

src/main/resources ------ 存放项目资源文件,如spring, hibernate配置文件

src/test/java ------ 存放所有测试.java文件,如JUnit测试类

src/test/resources ------ 测试资源文件 target ------ 项目输出位置

pom.xml

相关推荐
独自破碎E4 小时前
Java是怎么实现跨平台的?
java·开发语言
To Be Clean Coder4 小时前
【Spring源码】从源码倒看Spring用法(二)
java·后端·spring
xdpcxq10295 小时前
风控场景下超高并发频次计算服务
java·服务器·网络
想用offer打牌5 小时前
你真的懂Thread.currentThread().interrupt()吗?
java·后端·架构
橘色的狸花猫5 小时前
简历与岗位要求相似度分析系统
java·nlp
独自破碎E5 小时前
Leetcode1438绝对值不超过限制的最长连续子数组
java·开发语言·算法
用户91743965395 小时前
Elasticsearch Percolate Query使用优化案例-从2000到500ms
java·大数据·elasticsearch
yaoxin5211235 小时前
279. Java Stream API - Stream 拼接的两种方式:concat() vs flatMap()
java·开发语言
坚持学习前端日记6 小时前
2025年的个人和学习年度总结以及未来期望
java·学习·程序人生·职场和发展·创业创新
Cosmoshhhyyy6 小时前
《Effective Java》解读第29条:优先考虑泛型
java·开发语言