一,什么是Maven
Maven 是一款基于 Java 平台的项目构建和依赖管理工具,简单来说,它解决了 Java 开发中的两个核心痛点:
- 手动管理 Jar 包(依赖)麻烦:比如需要自己下载 Jar 包、解决 Jar 包之间的版本冲突、手动将 Jar 包加入项目类路径。
- 项目构建流程不统一:比如编译、测试、打包、部署等步骤,不同开发者可能有不同的操作方式,容易出问题。
二、maven的核心概念
cmake
my-project
├── src
│ ├── main
│ │ ├── java # 主代码
│ │ └── resources # 配置文件
│ └── test
│ ├── java # 测试代码
│ └── resources # 测试配置
├── target # 构建输出
└── pom.xml # 项目配置

三.创建一个项目里面都有这些
1.idea :
这是 IDEA 开发工具的配置文件夹,存储了项目的 IDE 配置信息,比如代码风格、运行配置、插件设置等。
它是 IDEA 自动生成的,不需要手动修改,也不需要提交到代码仓库。
2.mvn:
这个文件夹包含了 Maven 包装器(Maven Wrapper)的相关文件,它的作用是让项目在没有全局安装 Maven 的环境下也能运行。
确保所有开发者使用的是项目指定的 Maven 版本,避免因版本不一致导致的问题。

3. src
这是项目的源代码和资源文件的根目录,Maven 项目的核心内容都在这里面。
src/main
存放项目的主程序代码和资源,也就是最终会打包到生产环境里的内容。
java:存放 Java 源代码,比如你的com.yunku.Main主类就在这里。resources:存放主程序的配置文件、静态资源等,比如application.properties、mybatis-config.xml。
src/test
存放项目的测试代码和资源,只在开发阶段用于单元测试、集成测试等。
java:存放测试代码,比如MainTest.java。resources:存放测试用的配置文件,比如application-test.properties。
4.pom.xml
这是 Maven 项目的核心配置文件,是整个项目的 "灵魂"。
- 定义项目的基本信息(GAV 坐标)。
- 声明项目依赖(比如你需要引入的 Spring、JUnit 等 Jar 包)。
- 配置构建规则(比如打包方式、插件等)。
1,基本坐标构成有
Maven 的基本坐标由 groupId、artifactId、version 三个部分组成,合称为 GAV,所有 Maven 项目和依赖都必须具备这三个坐标,缺一不可,它的核心作用是在全球范围内唯一标识一个项目(或一个 Jar 包依赖),避免命名冲突。
xml
<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>
<!-- 核心坐标 GAV -->
<groupId>com.example</groupId>//比如公司部门
<artifactId>maven-demo</artifactId>//项目
<version>1.0.0-SNAPSHOT</version>//版本号
</project>
2,声明依赖
使用maven首先需要配置阿里云镜像网站,和设置本地仓库位置
xml
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
//配置本地仓库
<localRepository>D:\DevTools\maven-repository</localRepository>
//需要找到指定位置
xml
<!-- 项目依赖管理:所有第三方 Jar 包都在这里声明 -->
<dependencies>
<!-- 示例 1:引入 JUnit 4(用于单元测试,仅测试阶段生效) -->
<dependency>
<!-- 依赖的 GAV 坐标(每个依赖都有自己唯一的 GAV) -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<!-- 依赖作用域:test 表示仅在 src/test 目录下的测试代码中生效,不打包到最终产物 -->
<scope>test</scope>
</dependency>
<!-- 示例 2:引入 Spring Core 核心依赖(项目主代码中生效) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.20</version>
<!-- 省略 scope 时,默认作用域为 compile(主代码编译、运行、打包都生效) -->
</dependency>
</dependencies>
3,配置构建规则(打包方式、插件等)
xml
<!-- 项目构建配置:控制编译、打包等构建流程 -->
<build>
<!-- 1. 配置构建的基础信息(可选):指定打包后的产物名称 -->
<finalName>Maven-Demo-1.0</finalName>
<!-- 2. 配置构建插件:最核心的是编译插件,解决 JDK 版本兼容问题 -->
<plugins>
<!-- 示例:配置 Maven 编译插件,指定 JDK 8 编译 -->
<plugin>
<!-- 插件的 GAV 坐标(插件也是一种特殊的 Maven 项目) -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<!-- 插件的具体配置 -->
<configuration>
<source>8</source> <!-- 源代码兼容 JDK 8 -->
<target>8</target> <!-- 编译后字节码兼容 JDK 8 -->
<encoding>UTF-8</encoding> <!-- 编译时编码为 UTF-8 -->
</configuration>
</plugin>
</plugins>
</build>
四,text.java
1,作用是什么
测试类,测试代码
2,可以使用依赖,进行代码的操作
xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>

可以不用main函数可以直接运行方法
五,maven的生命周期
1,maven生命周期的依赖

2,依赖的作用
-
clean
- 清理项目构建产物,删除
target目录(编译、打包生成的文件均存储于此),为新的构建流程重置环境。
- 清理项目构建产物,删除
-
validate
- 验证项目配置的合法性(如
pom.xml格式、依赖完整性),确保后续构建流程可正常执行。
- 验证项目配置的合法性(如
-
compile
- 编译项目主代码(
src/main/java目录下的 Java 文件),将其转换为字节码文件,输出到target/classes目录。
- 编译项目主代码(
-
test
- 编译并执行测试代码(
src/test/java目录下的测试类),需依赖 JUnit 等测试框架,验证主代码功能的正确性。
- 编译并执行测试代码(
-
package
- 将编译后的代码打包为指定格式的产物(默认 Java 项目生成
jar包,Web 项目生成war包),产物存储于target目录。
- 将编译后的代码打包为指定格式的产物(默认 Java 项目生成
-
verify
- 对打包产物进行验证(如检查测试报告、代码质量等),确保产物符合项目规范。
-
install
- 将打包产物安装到本地 Maven 仓库,供本地其他 Maven 项目通过 GAV 坐标依赖引用。
-
site
- 生成项目文档站点(包含项目信息、测试报告、依赖说明等),便于项目的文档管理。
-
deploy
- 将打包产物部署到远程仓库(私服),供团队其他成员或其他项目共享使用。
3,依赖分为三种
