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

相关推荐
CodeClimb2 分钟前
【华为OD-E卷-简单的自动曝光 100分(python、java、c++、js、c)】
java·python·华为od
风清云淡_A13 分钟前
【java基础系列】实现数字的首位交换算法
java·算法
Gao_xu_sheng15 分钟前
Java程序打包成exe,无Java环境也能运行
java·开发语言
大卫小东(Sheldon)22 分钟前
Java的HTTP接口测试框架Gatling
java
谢家小布柔23 分钟前
java中的继承
java·开发语言
l1384942745129 分钟前
Java每日一题(2)
java·开发语言·游戏
苹果醋332 分钟前
SpringBoot快速入门
java·运维·spring boot·mysql·nginx
WANGWUSAN6643 分钟前
Python高频写法总结!
java·linux·开发语言·数据库·经验分享·python·编程
Yvemil743 分钟前
《开启微服务之旅:Spring Boot 从入门到实践》(一)
java
forNoWhat1 小时前
java小知识点:比较器
java·开发语言