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

news2024/11/17 5:29:29

文章目录

      • Maven(mvn)
        • 1.Maven 是什么?
        • 2.Maven做什么?
          • 2.1传统方式对项目的管理
          • 2.2Maven对jar包的管理
        • 3.Maven怎么学
          • 3.1Maven如何创建项目
          • 3.2Maven的下载与配置
          • 3.3Maven的项目结构
          • 3.4Maven依赖的引入
          • 3.5Maven依赖的剔除
          • 3.6Maven依赖的使用
          • 3.7查看依赖树(查看项目的依赖关系)
        • 4.Maven两个版本的区别
        • 5.Maven的下载与配置环境变量

Maven(mvn)

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

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

1.Maven 是什么?

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

# 构建什么:把项目工程经过编译,得到的编译结果,部署在服务器上的整个过程;
# 编译:   .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包;

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

打开编辑器,new一个project

在这里插入图片描述

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

# 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)我们构建项目的流程如下:

  编译     测试    运行      打包     安装     部署
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何清理磁盘空间

mysql 进入mysql的存储卷&#xff0c;查看磁盘空间占用比较大的文件&#xff0c;可以看到都是mhysql的bin文件&#xff0c;这些文件记录了mysql的操作用于备份mysql的数据做故障数据恢复。 我们的环境不需要这些数据&#xff0c;可以删除。 通过mysql客户端清理bin文件 SH…

鹿目标检测数据集VOC格式500张

鹿&#xff0c;一种优雅而神秘的哺乳动物&#xff0c;以其优美的外形和独特的生态习性而备受人们的喜爱。 鹿的体型通常中等&#xff0c;四肢细长&#xff0c;身体线条流畅。它们的头部较小&#xff0c;耳朵大而直立&#xff0c;眼睛明亮有神。鹿的毛色因品种而异&#xff0c;…

深圳易图讯科技VR三维电子沙盘系统

易图讯VR三维电子沙盘系统是一种结合虚拟现实技术的地理信息系统。它通过高精度三维模型&#xff0c;真实再现了地理环境、建筑布局和地形地貌。用户可通过VR设备沉浸式体验这一虚拟世界&#xff0c;进行各种交互操作&#xff0c;如缩放、旋转、移动等。系统还支持实时数据更新…

ClickHouse数据库详解和应用实践

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 概述1.适用场景2.不适用场景 一、核心特性1.完备的DBMS功能2.列式存储与数据压缩 二、安装部署1.在线安装2.离线安装 三、jdbc访问总结 概述 ClickHouse 是一个用于…

Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的图像转换为OpenCV的Mat图像的技术背景在NEOAPI SDK里实现相机图像转换为Mat图像格式联合OpenCV实现相机图像转换为Mat图像格式测试演示图 工业相机…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)创建一个TcpConnection实例

#CSDN 年度征文&#xff5c;回顾 2023&#xff0c;赢专属铭牌等定制奖品# 一、主线程反应堆模型的事件添加和处理详解 >>服务器和客户端建立连接和通信流程&#xff1a; 基于多反应堆模型的服务器结构图&#xff0c;这主要是一个TcpServer&#xff0c;关于HttpServer,…

torch.meshgrid和np.meshgrid的区别

numpy中meshgrid&#xff1a; 把数组a当作一行&#xff0c;再根据数组b的长度扩充行。 把数组b当作一列&#xff0c;再根据数组a的长度扩充列。 torch中meshgrid&#xff1a; 把数组a当作一列&#xff0c;再根据数组b的长度扩充列。 把数组b当作一行&#xff0c;再根据数组a的…

外汇天眼:交易如何突破“知行合一”这关?

接触交易之后有无数次想要放弃交易&#xff0c;在交易中的失败实在是太痛苦了&#xff0c;有时候这种失败是打击的作为一个人的最根本的自信&#xff0c;这种失败让我质疑我自己“本就是个普通人&#xff0c;不要想太美的事情”“为什么学习这么多还是不能盈利&#xff0c;我真…

LeetCode-无重复字符的最长子串(3)

题目描述&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 代码&#xff1a; class Solution {public int lengthOfLongestSubstring(String s) {Set<Character> occnew HashSet<Character>();int lens.length();int…

Java集合框架深度解析-ArrayList

Java的集合框架提供了一组实现常用数据结构的类和接口。理解集合框架对于Java程序员来说至关重要&#xff0c;因为它们在日常编程中广泛应用。 为什么需要集合框架&#xff1f; 在编程中&#xff0c;我们经常需要存储和操作一组对象。集合框架提供了用于表示和操作对象组的通…

如何使用 Python 解决网络抓取中的 reCAPTCHA 问题

在网络抓取的领域&#xff0c;开发人员经常面临 reCAPTCHA 的障碍。为了区分人类和自动化机器人&#xff0c;reCAPTCHA 可能会成为那些试图从网站提取数据的人的沉痛阻碍。然而&#xff0c;借助 Python 和像 Capsolver 这样的工具&#xff0c;可以绕过 reCAPTCHA 并继续抓取有价…

【计算机病毒传播模型】报告:区块链在车联网中的应用

区块链在车联网中的应用 写在最前面题目 - 26 车联网安全汇报演讲稿-删减2后&#xff0c;最终版&#xff08;1469字版本&#xff09;汇报演讲稿-删减1后&#xff08;2555字版本&#xff09;汇报演讲稿-删减前&#xff08;3677字版本&#xff09;1 概述1.1 车联网1.2 区块链1.3 …

【C#】网址不进行UrlEncode编码会存在一些问题

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是2024年第3篇文章&#xff0c;此篇文章是C#知识点实践序列文章&#xff0c;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言数据丢失效果请求端代码接口端代码…

【深度学习:Self-supervised learning (SSL) 】自我监督学习解释

【深度学习&#xff1a;SSL Self-supervised learning 】自我监督学习解释 什么是自我监督学习&#xff1f;比较自我监督学习与监督学习和无监督学习 为什么计算机视觉模型需要自监督学习&#xff1f;自我监督学习的好处自监督学习的局限性 自我监督学习如何运作&#xff1f;对…

burpsuite 爆破

靶场搭建:phpstudy的安装与靶场搭建 - junlin623 - 博客园 (cnblogs.com) 账号字典:XXTK: 一些弱口令、fuzz字典 (gitee.com) 网盘链接:https://pan.baidu.com/s/1v5pAwaTwoeCnJgkUXf3iLQ?pwd=mllm 提取码:mllm --来自百度网盘超级会员V2的分享 一、暴力破解 - 基于…

Linux-端口、nmap命令、netstat命令

端口是设备与外界通讯交流的出入口&#xff0c;可分为物理端口和虚拟端口 物理端口实际存在可以看见&#xff0c;而虚拟端口是指计算机内部的端口&#xff0c;是不可见的&#xff0c;用来操作系统和外部交互使用。 IP地址不能锁定程序&#xff0c;所以可以通过端口&#xff0…

全网最全fiddler使用教程和fiddler如何抓包(fiddler手机抓包)-笔者亲测

一、前言 抓包工具有很多&#xff0c;比如常用的抓包工具Httpwatch&#xff0c;通用的强大的抓包工具Wireshark.为什么使用fiddler?原因如下&#xff1a; 1.Wireshark是通用的抓包工具&#xff0c;但是比较庞大&#xff0c;对于只需要抓取http请求的应用来说&#xff0c;似乎…

线性代数——(期末突击)行列式(上)-行列式计算、行列式的性质

目录 行列式 行列式计算 逆序数 行列式的性质 转置 两行&#xff08;列&#xff09;互换 两行&#xff08;列&#xff09;对应相等 提公因子 两行&#xff08;列&#xff09;对应成比例 某行&#xff08;列&#xff09;为零 行列式分裂 行列式变换及三角行列式 行…

Selenium库和ChromeDriver谷歌驱动最新版安装

1.安装selenium库 使用pip安装第三方库selenium&#xff0c;速度较慢。 pip install selenium 使用国内清华源安装第三方库selenium&#xff0c;速度较快。 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple 2.安装谷歌浏览器驱动 驱动下载链接&#x…

低代码UI构件程序设计基础实训一

步骤一 低代码在线调试工具 网址 低代码在线调试工具 步骤二 D盘建一个文件夹&#xff0c;文件夹下建两个文件夹ico和js 网上找一些图片&#xff0c;后缀.png&#xff0c;编号从0开始&#xff0c;图片另存到ico文件夹下 下载&#xff08;右键另存为&#xff09;以下四个页面…