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

相关推荐
xmh-sxh-131411 分钟前
jdk各个版本介绍
java
XINGTECODE24 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
天天扭码30 分钟前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
程序猿进阶30 分钟前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺35 分钟前
Spring Boot框架Starter组件整理
java·spring boot·后端
小曲程序42 分钟前
vue3 封装request请求
java·前端·typescript·vue
凡人的AI工具箱1 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
陈王卜1 小时前
django+boostrap实现发布博客权限控制
java·前端·django
小码的头发丝、1 小时前
Spring Boot 注解
java·spring boot
先天牛马圣体1 小时前
如何提升大型AI模型的智能水平
后端