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

文章目录

      • 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.01.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.mzph.cn/news/599910.shtml

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

相关文章

1050. 鸣人的影分身(dp划分)

题目&#xff1a; 1050. 鸣人的影分身 - AcWing题库 输入样例&#xff1a; 1 7 3输出样例&#xff1a; 8 思路&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; const int N20; int f[N][N]; int main() {int T,m,n;cin>>T;while(T--)…

小红书玩法策略汇总,品牌运营攻略

众所周知&#xff0c;小红书平台凭借其出色的品宣传能力和产品种草能力&#xff0c;而稳坐内容平台C位。那么不论是作为达人&#xff0c;还是品牌方&#xff0c;进驻小红书平台后该如何进行传播&#xff0c;获取流量呢?我们今天和大家分享下小红书玩法策略汇总&#xff0c;品牌…

python练习3【题解///考点列出///错题改正】

一、单选题 1.【单选题】 ——可迭代对象 下列哪个选项是可迭代对象&#xff08; D&#xff09;&#xff1f; A.(1,2,3,4,5) B.[2,3,4,5,6] C.{a:3,b:5} D.以上全部 知识点补充——【可迭代对象】 可迭代对象&#xff08;iterable&#xff09;是指可以通过迭代&#xff…

专业课130+,总分390+四川大学951信号与系统考研通信,电子信息经验分享

今年专业课130&#xff0c;总分390&#xff0c;顺利上岸&#xff0c;将近一年复习一路走来&#xff0c;感慨很多&#xff0c;希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课&#xff1a;三门公共课&#xff0c;政治&#xff0c;英语&#xff0c;数学。在备…

Visual Studio 2022进行文件差异比较

前言 Visual Studio 2022在版本17.7.4中发布在解决方案资源管理器中比较文件的功能&#xff0c;通过使用此功能&#xff0c;可以轻松地查看两个文件之间的差异&#xff0c;包括添加、删除和修改的代码行。可以逐行查看差异&#xff0c;并根据需要手动调整和编辑文件内容以进行…

Web安全防护

一、Web安全简介 二、Web攻击来源 1、客户端&#xff1a; 2、服务器&#xff1a; 3、通道&#xff1a; 三、Web应用基本组成部分 URL工作过程 HTTP/HTTPS HTTP有两类报文 HTTP请求报头 HTTP协议请求方法 状态码 状态码组成 三、Cookie概述 Cookie和Session的关系 …

Python新年烟花代码

Pygame 绘制烟花的基本原理 1&#xff0c;发射阶段&#xff1a;在这一阶段烟花的形状是线性向上&#xff0c;通过设定一组大小不同、颜色不同的点来模拟“向上发射” 的运动运动&#xff0c;运动过程中 5个点被赋予不同大小的加速度&#xff0c;随着时间推移&#xff0c;后面的…

如何理解Nacos的CP和AP架构模型?

Nacos是阿里巴巴开源的注册中心和配置中心&#xff0c;它既可以替应用服务管理服务相关的元数据&#xff0c;也可以管理服务相关的配置信息。 Nacos既支持单机部署&#xff0c;也支持集群部署&#xff0c;为了保证数据的一致性&#xff0c;在集群模式下&#xff0c;Nacos既支持…

代码随想录刷题第三十六天| 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

代码随想录刷题第三十六天 无重叠区间 (LC 435) 题目思路&#xff1a; 代码实现&#xff1a; class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:intervals.sort(keylambda x: (x[0],x[1]))count 0right intervals[0][1]for i in ra…

手游开发项目经验简单总结

这是我最近一个完整的手游开发项目的简单总结&#xff0c;请大家指点 引擎 语言 编辑器 项目开发模块规划分 主项目工程&#xff0c;UI资源项目工程&#xff0c;模型场景资源项目工程 热更框架 前后端协议 UI 图集 多语言适配 SLG场景和其他场景 战斗 美术模型资源 人物 动作…

mysql 添加用户并分配select权限

1.root用户先登录或者在可执行界面 1.1 选择mysql 点击mysql 或者在命令行 use mysql 1.2创建用户 CREATE USER username% IDENTIFIED BY password; 备注1&#xff1a;%替换为可访问数据库的ip&#xff0c;例如“127.0.0.1”“192.168.1.1”&#xff0c;使用“%”表示不限制…

如何通过HACS+Cpolar实现远程控制米家和HomeKit等智能家居设备

文章目录 基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssistant&#xff0c;通过内网穿透在户外控制家庭中枢。本文将介绍如何安装HACS插件商店&#xff0c;将米家&#xff0c;果家设备接入 Home Assistant。 基本条件…

5G时代的电商:超高速网络如何改变购物体验?

随着5G技术的不断发展和商业化推广&#xff0c;超高速网络正深刻地改变着人们的生活方式&#xff0c;其中最显著的之一便是电子商务领域。本文将深入探讨5G时代电商的发展趋势&#xff0c;以及超高速网络如何深刻改变用户的购物体验。 5G技术的崛起 5G技术是第五代移动通信技术…

linux系统安全及应用

系统账号清理 将用户设置成无法登录 将用户的shell属性改成/sbin/nologin锁定用户 passwd -l 用户 锁定用户 passwd -u 用户 解锁用户删除用户 userdel -r 用户 删除用户及家目录锁定配置文件 chattr i 文件或文件夹 锁定文件或文件夹&#xff0c;锁定之后便无法修…

生成式 AI -颠覆软件开发

# 生成式AI如何重塑开发流程和开发工具 # &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;C/C精进之路 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 目录 1 引言 …

物奇平台蓝牙耳机SOC MIC气密性测试配置方法

物奇平台蓝牙耳机SOC MIC气密性测试配置方法 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 1 正常的MIC频响曲线 2 异常的MIC频响曲线 FF…

MySQL数据库设置主键自增、自增主键为什么不能保证连续递增

文章目录 一、设置主键自增1.1、建表时设置主键自增1.2、建表后设置主键自增1.3、删除自增约束 二、自增列&#xff1a;AUTO_INCREMENT2.1、自增起始值和自增步长2.2、自增主键存储策略2.3、自增值修改机制2.3、特点和要求 三、自增字段值不连续3.1、自增不连续的示例3.1.1、示…

【书生·浦语大模型实战营01】《书生·浦语大模型全链路开源体系》

《书生浦语大模型全链路开源体系》 1. 大模型成为热门关键词 LLM发展时间轴 2. 书生浦语全链条开源开放体系 微调&#xff1a;XTuner 支持全参数微调支持LoRA等低成本微调 评测&#xff1a;OpenCompass 全方位评测&#xff0c;性能可复现80套评测集&#xff0c; 40万道题目…

【金猿CIO展】现代咨询CIO崔恩博:数字化转型,CIO不仅要懂技术和业务,更要“懂人”...

‍ 崔恩博 本文由现代咨询CIO崔恩博撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 最近几年&#xff0c;大数据行业的发展备受关注&#xff0c;尤其是2019年以后&#xff0c;随着企业…

73.乐理基础-打拍子-还原号、临时变音记号在简谱中的规则

上一个内容&#xff1a;72.乐理基础-打拍子-加延音线的节奏型-CSDN博客 下图中1-13&#xff0c;就是四几拍中所有可能出现的节奏型&#xff0c;以及它们的组合方式&#xff0c;需要练习&#xff0c;可以买一本视唱书去练习&#xff0c;搜乐谱练习&#xff0c;自己写节奏型根据…