likes
comments
collection
share

一篇搞懂Maven!

作者站长头像
站长
· 阅读数 17

嘿嘿 hello这是我滴第一篇学习笔记 记录!初乍多照~~~😄😄😄~~

开门见山 我们先丢一份思维导图再说😄💘:一篇搞懂Maven!一篇搞懂Maven!

前言:我们本篇主要是讲解maven的核心,跳过了概述和安装配置。只写干货~(主要是懒

第一部分:Maven有什么作用呢?

1.1 依赖管理

方便快捷的管理项目依赖的资源(jar包),也避免版本冲突的问题。

不用去自己去导入jar包,要用什么jar包,在maven项目中的pom.xml文件一篇搞懂Maven!配置依赖和版本(直接修改—>再刷新就会自动切换一篇搞懂Maven!),maven会自动联网下载对应的依赖(后面有对这个的详细介绍,有三种不同的方式下载依赖)

1.2 统一项目结构

提供标准、统一的项目结构

无论你用IDEA还是eclipse...,如果使用maven,就会都统一标准的结构如下:

一篇搞懂Maven!

温馨提示: ~在后面我们会学到的SpringBoot和Maven直接也是相辅相成的关系。Spring Boot是一个基于Spring框架的快速开发框架,它进一步简化了Spring应用的开发和部署。在实际开发中,通常会使用Maven来管理Spring Boot项目的依赖并构建项目。Maven通过其依赖管理功能,使得Spring Boot项目能够轻松集成Spring框架的各个模块和第三方库。

1.3 项目构建

标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式

清理-编译-测试-打包-发布,这些功能在侧边栏maven面板中都有(这里是涉及到生命周期 在后面的 2.2节处会详细介绍)

一篇搞懂Maven!

~在某个操作后 对应的结果文件(如编译后的class文件) 都会出现在左边栏的一个target目录下:

一篇搞懂Maven!

第一部分小结:

Maven是一款管理和构建java项目的工具!

它基于 项目对象模型POM(上述有图)的概念,通过一小段描述信息来管理 项目的构建。

第二部分:Maven的组成

Maven其实是由三个组件组成滴(这图 非常直观!)

一篇搞懂Maven!

2.1 POM-项目对象模型

POM是项目的对象模型,依赖管理模型(Dependency)是添加在POM文件中的一段代码,它说明了此项目需要什么依赖,以及该依赖的版本。(在第2.3.1部分会详细讲 关于依赖)

在POM中下面这个三条代表的是Maven的坐标,通过这个坐标就可以唯一的来标识和定位这个资源的位置,当在POM中添加了这个坐标 就会自动的去访问本地仓库中的这个依赖jar包

<groupId>com.itheima</groupId>  // 组Id 通常是域名反写(也有可能是一层层目录 ch.qos.logback.logback.classic.1.2.3)
<artifactId>maven-project01</artifactId>  // 工件id 模块名称(或是要依赖的jar包名)
<version>1.0-SNAPSHOT</version> // 依赖版本

关于“仓库”它是用于 存储资源,管理各种jar包,有三种仓库:

      • 本地仓库:自己计算机上的一个目录
      • 中央仓库:由Maven团队维护的全球唯一的仓库。repo1.maven.org/maven2/[链接](<repo1.maven.org/maven2/ >) 但因为访问 中央仓库 要连接外网,所以速度较慢
      • 远程仓库(私服):一般由公司团队搭建,大家共用,可以提高速率 ,只要公司中有同事曾经下载过这个jar包,后面其他人再使用就直接再远程仓库中可以获取,不用再连接外网到中央仓库去下载。

2.2 生命周期

一篇搞懂Maven!

我们只用关注下面这五个阶段:

clean:就是清除项目中的产生的 target目录 下的一些文件(如:.class)

compile:编译项目源代码 生成class文件

test:使用合适的单元测试框架运行测试(junit)(详细见下)

package:将编译后的文件打包(在target中),如:jar包、war包

install:安装项目到本地仓库(在C:\develop\apache-maven-3.6.1\mvn_repo)这个就是我自己电脑上的本地仓库

补充:junit 是一个 Java 语言的单元测试框架。(是关于test的 下面有说)

它主要用于编写和运行 可重复的单元测试,以验证代码的正确性。通过使用 Junit,可以方便 地对单个方法或小的代码模块进行测试,快速发现代码中的错误和问题,有助于提高代码质量和开发效率。Junit 提供了一系列的断言方法和测试运行机制,使得单元测试的编写和管理变得更加简洁和高效。

关于test:要先在pom中导入junit(单元测试依赖),一般是帮你自动生成的有 如下:

一篇搞懂Maven!

然后在test中的java类里 创建带@Test的各个方法:

一篇搞懂Maven!

就会得到一些所产生的日志:

一篇搞懂Maven!

在直接执行package或install时也可以选择跳过测试test:

一篇搞懂Maven!

一篇搞懂Maven!

在一套生命周期中,执行阶段是有顺序的哈!后面的阶段依赖于前面的阶段,也就是说执行后面的阶段,也会先帮你执行前面的阶段,这里注意!你直接执行install指令,会执行前面所有的指令(default的生命周期中),但clean不会,因为clean属于另一套生命周期!

生命周期这块应该讲的比较清楚了,就不总结嘞 嘿嘿

2.3 依赖管理模型

2.3.1依赖配置

· 依赖:指当前项目运行所需的jar包,一个项目中可以引入多个依赖

· 配置

  1. 在pom.xml中编写标签

  2. 在标签中 使用引入坐标

  3. 定义坐标的 groupId, artifactld, version

4.点击刷新按钮一篇搞懂Maven!,引入最新加入的坐标(在右侧栏Maven面板中可以

看是否生成了依赖项)

一篇搞懂Maven!

如果不知道依赖的坐标信息,可以根据想要的依赖 (如这里的 logback)直接在这个Maven中央仓库的网站Maven Repository: Search/Browse/Explore (mvnrepository.com)中找(里面有现成的依赖模型代码直接CV) step1:先搜索所需依赖,再点进去

一篇搞懂Maven!

step2:点击合适的版本(使用人数多的)

一篇搞懂Maven!

step3:现有的代码就有啦

一篇搞懂Maven!

注意:如果引入的依赖,在本地仓库不存在,将会连接到远程/中央仓

库 进行下载。

2.3.2 依赖传递

一篇搞懂Maven!

如:添加了A、B、C 三个项目,并且A中包含有B,B中包含有C

这是A中定义有B的依赖:

一篇搞懂Maven!

这是B中定义了C的依赖:

一篇搞懂Maven!

在IDEA中有可视化的表格可以直观的看到某一个项目的依赖关系图:在POM文件中右键——图表——显示图

一篇搞懂Maven!

就会得到如下:

一篇搞懂Maven!

如果!你只想A项目依赖B 但不再依赖B中的依赖的其他jar包,就可以使用————排除依赖(exclusion)

一篇搞懂Maven!

一篇搞懂Maven!

这样A中就没有juit的jar包啦~

一篇搞懂Maven!

2.3.3 依赖范围

一篇搞懂Maven!

当范围是默认compile时(即是什么都不加)main和test以及打包都是可以的:

一篇搞懂Maven!

修改范围为 :

<scope>test</scope> //添加到POM中的依赖板块里

之后,在主程序main中再定义 接口或对象 就报错,test中是正常的

一篇搞懂Maven! 丢! 怎么到这儿就完了,还没学够啊啊啊!Maven掌握到这儿也差不多啦

“只要一直在跑,肯定错不了!!!”

转载自:https://juejin.cn/post/7394722839045324826
评论
请登录