Maven

Maven

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合

帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,
它会帮助我们下载/提供 所有的Jar,极大提升开发效率

下载和配置

官网:https://maven.apache.org/download.cgi

  1. 点击Binary zip archive apache-maven-3.9.11-bin.zip(选择需要的版本)

  2. 解压到没有中文的文件夹下

  3. 添加环境变量,变量名MAVEN_HOME,变量值为解压路径

  4. 在Path里添加%MAVEN_HOME%\bin

  5. mvn –v测试

  6. 找个位置新建repository文件夹存放jar包

  7. conf文件夹里复制setting.xml配置文件,将mirror和本地仓库地址改为

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <localRepository>D:\maven\repository</localRepository>

    <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>
    http://maven.aliyun.com/nexus/content/groups/public/
    </url>
    <mirrorOf>central</mirrorOf>
    </mirror>

IDEA中使用Maven

  1. 设置中找到Maven

  2. 修改Maven主路径为解压路径

  3. 修改用户设置文件为修改过的setting.xml

  4. 修改本地仓库为之前创建的repository文件夹

    ✨打开每个项目都要检查一下✨

概念

依赖管理

maven工程中不直接将 jar包导入到工程中,而是通过在 pom.xml 文件中添加所需jar包的坐标

Maven仓库类型

  • 本地仓库
    存放在本地服务器中,当运行项目的时候,maven会自动根据配置文件查找本地仓库,再从本地仓库中调用jar包使用。
  • 远程仓库
    当本地仓库中没有项目所需要的jar包时,那么maven会继续查找远程仓库,一般远程仓库指的是公司搭建的私有服务器,也叫私服;
    当jar包在私服中查找到之后,maven会将jar包下载到本地仓库中,下次使用的时候就不用再去找远程仓库。
  • 中央仓库
    当远程仓库获取不到jar包时,就需要到中央仓库去查找,并下载在远程仓库中,本地仓库再从远程仓库中下载回来使用。

pom.xml

pom (Project Object Model) 是Maven项目的核心配置文件,用于管理项目的依赖、插件、构建配置等

2.x格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<!-- 声明这是一个 Maven POM 文件 -->
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--
modelVersion:固定写 4.0.0,表示用的 POM 版本模型。
groupId:项目组织 ID(一般是公司/组织域名反写)。
artifactId:项目名(模块名)。
version:项目版本号,-SNAPSHOT 表示开发中的快照版本
-->
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>maven_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>

<!--
name:项目的名字,主要给人看。
description:项目描述。
-->
<name>maven_demo</name>
<description>maven_demo</description>

<!-- properties:定义变量,便于复用 -->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
</properties>

<!-- 项目所需依赖库 -->
<dependencies>
<!-- Spring Boot 基础依赖,包含 Spring 核心、日志等 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<!-- 测试依赖,包含 JUnit、Mockito 等,scope=test 表示只在测试时使用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<!-- 依赖版本的“字典”,统一管理依赖的版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<!-- 定义构建相关配置,比如插件、编译器版本、打包方式 -->
<build>
<plugins>
<!--
指定用的编译插件。
source:源码使用的 Java 版本。
target:编译生成的字节码版本。
encoding:文件编码。
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

<!--
spring-boot-maven-plugin:Spring Boot 的打包插件。
默认会把项目打成 可运行的 fat jar(内含所有依赖)。
mainClass:指定入口类(@SpringBootApplication 的那个类)。
skip=true:是否跳过插件执行。这里写了 true,说明当前配置可能只做演示/测试用。
executions/repackage:repackage 目标会把普通 jar 包重新打包成 Spring Boot 可执行 jar。
-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>org.example.maven_demo.MavenDemoApplication</mainClass>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>

</plugins>
</build>

</project>

3.x格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

<!-- maven版本 -->
<modelVersion>4.0.0</modelVersion>

<!-- 指定父POM,统一管理所有依赖的版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<groupId>com.xw</groupId> <!-- 公司域名反写 -->
<artifactId>consultant</artifactId> <!-- 项目名 -->
<version>0.0.1-SNAPSHOT</version> <!-- 版本 -->

<!-- 项目说明 -->
<name>consultant</name>
<description>consultant</description>

<!-- 全局配置,定义全局变量 -->
<properties>
<java.version>17</java.version> <!-- SpringBoot3要求JDK 17+ -->
</properties>

<!-- 项目的主页地址,可以填 GitHub/GitLab -->
<url/>

<!-- 项目许可证信息 -->
<licenses>
<license/>
</licenses>

<!-- 项目开发者信息 -->
<developers>
<developer/>
</developers>

<!-- 项目的源码仓库信息 -->
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>

<!-- 项目用到的所有依赖包 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<!-- 打包、编译、运行用的 -->
<!-- maven只是管理工具,真正执行的是插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId> <!-- 编译打包插件 -->
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

常用命令

  • 清理项目

    删除 target (编译出来的 class、jar 包)文件夹

    1
    mvn clean
  • 编译代码

    .java文件编译成.class文件,用来检查代码有没有语法错误

    1
    mvn compile
  • 运行单元测试

    编译 + 测试,执行所有 @Test 测试方法

    1
    mvn test
  • 打包项目

    编译 → 测试 → 打包(生成jar包)

    1
    2
    3
    4
    mvn package

    # 跳过测试
    mvn package -DskipTests
  • 打包并安装到本地仓库

    1
    mvn install
  • 查看Maven版本

    1
    mvn -v

Maven
http://xwww12.github.io/2025/09/19/后端/Maven/
作者
xw
发布于
2025年9月19日
许可协议