当前位置: 首页 > news >正文

【Maven】01 - 入门篇

【Maven】01 - 入门篇

文章目录

  • 【Maven】01 - 入门篇
    • 一:Maven依赖管理
    • 二:刷新Maven
    • 三:依赖管理的范围
    • 四:Maven工作原理
    • 五:Maven生命周期

安装maven,配置环境变量和配置setting.xml不再多说,网上多的是,非常简单

一:Maven依赖管理

最简单的依赖管理,总共就只有三步,如下:

1️⃣ 在pom.xml中,先写一个<dependencies>标签;

2️⃣ 在<dependencies>标签中,使用<dependency>标签来导入依赖;

3️⃣ 在<dependency>标签中,通过GAV坐标来导入依赖,而所谓的GAV坐标就是

  • GroupID:组织ID,一般写公司的名称缩写;
  • ArtifactID:当前Maven工程的项目名字;
  • Version:当前Maven工程的版本。
<dependencies><!-- 这是一个示例 --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.1.8.RELEASE</version></dependency>
</dependencies>

现在有一个核心问题就是很多人知道自己想要引入什么依赖,但是不知道对应的groupId,下面提供两种方式

  1. https://mvnrepository.com/ -> 这个是maven仓库,可以通过搜索查找自己的依赖,然后直接拷贝

在这里插入图片描述

  1. 如果你使用的是IDEA,那么可以添加一个maven-search的插件,然后在pom.xml中右键,输入你想要添加的依赖,选择对应的版本之后,复制maven就可以了

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二:刷新Maven

引入GAV坐标后,依赖不会立马生效,需要手动刷新一下项目,这里也是两种方式(都是以IDEA为例):

  1. 可以使用右上角maven的刷新图标

在这里插入图片描述

  1. 可以安装maven-helper插件,在项目上右键,然后通过Run Maven里的指令刷新

在这里插入图片描述

在这里插入图片描述

三:依赖管理的范围

有时候,有些依赖我们并不希望一直有效,比如典型的JUnit测试包,对于这类jar包而言,最好只针对测试环境有效

这时可以使用<scope>属性控制依赖的生效范围

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.1.8.RELEASE</version><scope>test</scope>  <!-- 声明只对测试环境有效 -->
</dependency>

该标签共有五种取值方式,每种取值对应着一种依赖范围,而不同的依赖范围,生效的环境(classpath)也并不同

依赖范围编译环境测试环境运行环境
compile(默认)
provided×
system×
runtime×
test××

项目引入的所有依赖,如果不显式指定依赖范围,默认是compile,意味着所有环境下都生效,而一般的依赖包也无需更改,只有某些特殊的依赖,才需要手动配置一下

四:Maven工作原理

Maven中,节点会分为工程、仓库两大类,工程是“依赖使用者”,仓库是“依赖提供者”

在这里插入图片描述

  • 中央仓库:就是配置的镜像源(maven的setting.xml),里面拥有海量的公共jar包资源;
  • 远程仓库:也叫私服仓库,主要存储公司内部的jar包资源(nexus);
  • 本地仓库:自己电脑本地的仓库,会在磁盘上存储jar包资源。

了解了三大仓库的概念,Maven的工作原理就非常清晰了:

在这里插入图片描述

🎉 在本地仓库中,GAV坐标和本地仓库的文件夹意义对应,所以只要你书写了正确的GAV坐标,就一定能够找到所需的依赖,并将其载入到项目中

在这里插入图片描述

五:Maven生命周期

在IDEA中,通过maven工具,可以非常清楚的看到maven有九种LifeCycle命令:

在这里插入图片描述

  • clean:清除当前工程编译后生成的文件(即删除target整个目录);
  • validate:对工程进行基础验证,如工程结构、pom、资源文件等是否正确;
  • compile:对src/main/java目录下的源码进行编译(会生成target目录);
  • test:编译并执行src/test/java/目录下的所有测试用例;
  • package:将当前项目打包,普通项目打jar包,webapp项目打war包;
  • verify:验证工程所有代码、配置进行是否正确,如类中代码的语法检测等;
  • install:将当前工程打包,然后安装到本地仓库,别人可通过GAV导入;
  • site:生成项目的概述、源码测试覆盖率、开发者列表等站点文档(需要额外配置);
  • deploy:将当前工程对应的包,上传到远程仓库,提供给他人使用(私服会用)。

上述的命令非常非常得常用,一定要对每一个命令的作用十分的熟悉!!!

在这里插入图片描述

主要注意核心工作周期(default)这一套,该生命周期涵盖了构建过程中的检测、编译、测试、打包、验证、安装、部署每个阶段

同一生命周期内,执行后面的命令,前面的所有命令会自动执行!!!

# test命令位于default这个生命周期内,所以它会先执行validate、compile这两个阶段,然后才会真正执行test阶段
mvn test

还可以一起执行多个命令

# 这两个命令隶属于不同的周期,所以会这样执行:
# 先执行clean周期里的pre-clean、clean,再执行default周期中,validate~install这个闭区间内的所有阶段。
mvn clean install

Maven插件会实现生命周期中的每个阶段,这也就是为啥IDEA中的Lifecycle下面,还会有个Plugins的原因

当你双击Lifecycle中的某个生命周期阶段,实际会调用Plugins中对应的插件

Shell窗口执行mvn命令时,亦是如此,因为插件对应的实现包,都会以jar包形式存储在本地仓库里

有特殊的需求,也可以在pom.xml<build>标签中,依靠<plugins>插件来导入

在这里插入图片描述

http://www.lryc.cn/news/617182.html

相关文章:

  • Maven 的 module 管理
  • 基于Spring Data Elasticsearch的分布式全文检索与集群性能优化实践指南
  • Maven 报错:Blocked mirror for repositories【完美解决】
  • 直接编辑pdf文件教程
  • SpringBoot 自动配置核心机制(面试高频考点)
  • wpf问题记录
  • 【2025最新版】PDF24 Creator,PDF编辑,合并分割,格式转换全能工具箱,本地离线版本,完全免费!
  • 【Maven】02 - 进阶篇
  • 《深度剖析前端框架中错误边界:异常处理的基石与进阶》
  • 华为虚拟防火墙配置案例详解
  • 基于SpringBoot+Uniapp的血压监控小程序(Echarts图形化分析)
  • 华为watch5心率变异性测量法的底层逻辑
  • Django ORM查询技巧全解析
  • 41.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成Swagger
  • Spring MVC 注解参数接收详解:@RequestBody、@PathVariable 等区别与使用场景
  • kafka 中的Broker 是什么?它在集群中起什么作用?
  • [Oracle] UNPIVOT 列转行
  • CodeBuddy IDE完全食用手册:从安装到生产力爆发的技术流解剖
  • 视频前处理技术全解析:从基础到前沿
  • 【安全发布】微软2025年07月漏洞通告
  • AI大模型:(二)5.1 文生视频(Text-to-Video)模型发展史
  • 从ELF到进程间通信:剖析Linux程序的加载与交互机制
  • 音视频学习(五十三):音频重采样
  • 动态创建可变对象:Python类工厂函数深度解析
  • Vue3从入门到精通:3.1 性能优化策略深度解析
  • Unity跨平台性能优化全攻略:PC与安卓端深度优化指南 - CPU、GPU、内存优化 实战案例C#
  • docker集群
  • 在Linux中部署tomcat
  • MyBatis高级特性与性能优化:从入门到精通的实战指南
  • NEON性能优化总结