Maven(mvn)的学习下载和配置

文章目录

Maven(mvn)

在开始之前我先来谈一谈我的学习方法,我在学习认识新东西之前是按照三步走来学习的,即:是什么?做什么?怎么学?

那接下来就让我们按照三步走来学习一下Maven

1.Maven 是什么?

Maven就是服务于Java平台的自动化构建工具;简单来说就是我们的项目管理工具

markdown 复制代码
# 构建什么:把项目工程经过编译,得到的编译结果,部署在服务器上的整个过程;
# 编译:   .java文件通过javac编译器编译成 .class型的字节码文件
2.Maven做什么?

它是一个Apache的开源项目,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理,为了不重复造轮子。

Maven最主要的体现在了2个词 "项目"和"管理"!加在一起就是项目管理。

总结

就是帮我们打包项目的,通常使用最多的就是package命令和clean和install;

当我们部署好maven以后,一般直接使用plugins插件下的jar,双击两下就可以在target文件夹下看到maven帮我们打包好的项目xxx.jar;

如下图:

2.1传统方式对项目的管理

两个项目A,B,项目A需要依赖一些jar包,项目B也需要依赖这些jar包,那么此时如果都把jar包引入到项目中;再比如要更新jar版本,所以又得重新下载,重新部署到项目中(部署到lib中);以上就是在重复造轮子。我们应该把这些所有的jar包放到一个地方,需要用的时候过去取即可。而Maven就帮我们做了这些事情(这就是Maven的项目管理)

2.2Maven对jar包的管理

Maven把我们需要的jar包都放到一个仓库(repository)中,统一管理,(做到复用、多项目可共同使用)每个jar包的对应位置用一个坐标表示;

坐标三要素:文件夹+名字+版本号

如何定位这个位置------------文件夹+名字+版本号=坐标 就可以定位到唯一的jar包;

markdown 复制代码
# 关于仓库:
   本地仓库(本机上从中央仓库下载过来的jar包)
   中央仓库(Maven免费提供的)
   远程仓库(企业自己的--->私服)
使用时,若本地仓库可以找到jar包,正常使用;本地仓库找不到jar包,就去远程仓库查找,远程找不到,就去中央查找,若都找不到,就会报错;再任何一个仓库中找到jar包就会下载到本地,做到复用
3.Maven怎么学
3.1Maven如何创建项目

打开编辑器,new一个project

根据 坐标三要素:文件夹+名字+版本号

markdown 复制代码
# groupId:    代表jar包所来源的渠道;对应文件夹的名;
				com.alibaba;com.duyi;
# artifactId: 代表项目的唯一名字maven-duyi-demo.jar ; common-io.jar
# version:    代表版本号 1.0 2.0 3.0
				1.0-SNAPSHOT(快照版本,不稳定)
				1.0-RELEASE(发布版本,稳定)

Maven项目打开后就会有约定好的目录结构,不用我们自己再去配置;体现的设计思想就是:"约定优于配置"

Mvn的核心配置文件:pom.xml ; 里面含有项目被打包后的坐标三要素

3.2Maven的下载与配置

下面这个博主讲的挺好的,大家可以借鉴一下
如何创建maven项目

3.3Maven的项目结构

一个使用Maven管理的普通的Java项目,它的目录结构默认如下:


3.4Maven依赖的引入

引入一些依赖可以查找坐标的网站https://www.mvnrepository.com/

Maven的依赖有递进关系,项目A依赖了jar包B,而jar包B又依赖了jar包C,所以也相当于项目A依赖着jar包C.

复制代码
方法:利用  < dependencies>标签
3.5Maven依赖的剔除

我们原本只想引入jar包B,不想要jar包C;或者说引入了jar包B,现在不想要了;如何剔除?

复制代码
方法:利用  < exclusions >标签
3.6Maven依赖的使用

1)我们构建项目的流程如下:

java 复制代码
  编译     测试    运行      打包     安装     部署
compile   test  runtime   package  install  deploy

看依赖在哪个过程使用

2)依赖使用的范围

复制代码
利用< scope >标签声明  代表依赖在哪个过程使用eg:<scope >runtime</scope >

compile  缺省值 (也就是编译时使用) 伴随着项目的整个生命周期而存在
provided 已提供的 代表我们的使用的jar是已经提供好的,不需要再打包到项目最后的jar包里
lruntime 运行时使用
test     测试时使用
system   自定义依赖jar包的位置(不推荐使用)
3.7查看依赖树(查看项目的依赖关系)

查看依赖树的目的:更好的解决jar包冲突的问题

复制代码
方式一: IDEA右键 ------Diagrams------Show Dependencies(比较直观)
方式二: Terminal中输入:mvn dependency:tree常用的命令

4.Maven两个版本的区别

概念上:

复制代码
- Snapshot:代表版本不稳定,尚处于开发当中;
- Release则代表稳定版本
  1. 如果deploy到远程服务器,如果是release则只能deploy一次,以后部署的话则会造成冲突
  2. 如果是快照版本的话,我们可以多次deploy,每一次部署都会冲掉之前的版本

具体使用上:

  1. 当我们在做协同开发的时候,比如这个时候A依赖B,但是B可能一直在做更新,这个时候我们的B就应该使用快照版本;

原因:

  • 如果B不用快照版的话,每次更新后都使用一个稳定版本,那么版本号就会迭代的太快,可能就会造成版本号的乱用问题;
  • 如果B一直使用一个Release版本,那么当B更新后,A可能并不会接受到更新。因为A所使用的repository一般不会频繁更新release版本的缓存(即本地repository),所以当B以不换版本的方式进行更新时,A在拿B时发现本地已有这个版本,就不会去远程Repository下载最新的
  1. 正式环境下我们一般都会使用release版本

比如今天我们依赖的某个snapshot版本的第三方库成功构建了自己的应用,明天再构建时可能就会失败;

因为今晚第三方可能已经更新了它的snapshot库。你再次构建时,Maven会去远程repository下载snapshot的最新版本,你构建时用的库就是新的jar文件了,这时正确性就很难保证了。

5.Maven的下载与配置环境变量

maven官网下载地址: https://maven.apache.org/download.cgi

下载与配置在这不做赘述,有博主讲的很细致,我把链接放在下面,大家可以看看
1.maven的下载和环境变量配置 :https://blog.csdn.net/m0_67394230/article/details/126435213
2.maven在IDEA中的配置:https://blog.csdn.net/MSDCP/article/details/127680844

相关推荐
Java中文社群2 分钟前
Hutool被卖半年多了,现状是逆袭还是沉寂?
java·后端
程序员蜗牛34 分钟前
9个Spring Boot参数验证高阶技巧,第8,9个代码量直接减半!
后端
yeyong36 分钟前
咨询kimi关于设计日志告警功能,还是有启发的
后端
库森学长42 分钟前
2025年,你不能错过Spring AI,那个汲取了LangChain灵感的家伙!
后端·openai·ai编程
爱吃苹果的日记本1 小时前
开学第一课
java
Java水解1 小时前
Spring Boot 启动流程详解
spring boot·后端
学历真的很重要1 小时前
Claude Code Windows 原生版安装指南
人工智能·windows·后端·语言模型·面试·go
渣哥1 小时前
Java 集合框架详解:常见集合类及分类方式
java
转转技术团队1 小时前
让AI成为你的编程助手:如何高效使用Cursor
后端·cursor
shellvon1 小时前
你怎么被识别的?从TLS到Canvas的设备追踪术
后端·算法