什么是Maven
Maven就是一款管理和构建java项目的工具
Maven仓库
仓库的本质就是一个目录(文件夹),这个目录被用来存储开发中所有依赖(就是jar包)和插件
Maven中有哪几类仓库?查找依赖(jar)的顺序是什么样的?
本地仓库(1)
远程仓库(2)
中央仓库(3)
pom.xml文件详解
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>site.suiyue</groupId>
<artifactId>maven-project01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.1</version>
</dependency>
</dependencies>
</project>
<project>:pom文件的根标签,表示当前maven项目<modelVersion>:声明项目描述遵循哪一个POM模型版本- 虽然模型本身的版本很少改变,但它仍然是必不可少的。目前POM模型版本是4.0.0
- 坐标 :
<groupId><artifactId><version>- 定位项目在本地仓库中的位置,由以上三个标签组成一个坐标
<maven.compiler.source>:编译JDK的版本<maven.compiler.target>:运行JDK的版本<project.build.sourceEncoding>: 设置项目的字符集
Maven坐标?
#Maven中的坐标是资源(jar)的唯一标识,通过该坐标可以唯一定位资源位置。
#使用坐标来定义项目或引入项目中需要的依赖。
<dependency>
<groupId>site.suiyue</groupId>
<artifactId>maven-project01</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
#Maven坐标主要组成
#groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:site.suiyue)
#artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
#version:定义当前项目版本号
排除依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.4</version>
<!--排除依赖,主动断开依赖的资源,排除不需要的依赖传递-->
<exclusions>
<exclusion>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-observation</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖范围
依赖的jar包,默认情况下,可以在任何地方使用,在main目录下,可以使用;在test目录下,也可以使用。
在maven中,如果希望限制依赖的使用范围,可以通过 <scope>…</scope> 设置其作用范围。
| scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
| compile(默认) | Y | Y | Y | log4j |
| test | - | Y | - | junit |
| provided | Y | Y | - | servlet-api |
| runtime | - | Y | Y | jdbc驱动 |
Comments NOTHING