Maven

发布于 2025-11-11 1 次阅读 710 字 预计阅读时间: 3 分钟 JAVA


什么是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(默认)YYYlog4j
test-Y-junit
providedYY-servlet-api
runtime-YYjdbc驱动