文章目录
- 1 Maven概述
- 2 Maven项目基础
- 2.1 项目坐标
- 2.2 项目结构
- 2.3 pom配置文件
- 3 Maven依赖管理
- 3.1 依赖配置
- 3.2 依赖范围
- 3.3 依赖传递和排除
- 4 Maven生命周期
- 5 参考资料
1 Maven概述
Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具,通过一小段描述信息来管理项目的构建、报告和文档。
-
方便的依赖管理:方便快捷的管理项目依赖的资源(jar包)。
-
统一的项目结构:提供标准、统一的项目结构。
-
标准的项目构建流程:提供标准的、跨平台的自动化项目构建方式。
官网:https://maven.apache.org/
2 Maven项目基础
2.1 项目坐标
Maven中的坐标是资源的唯一标识,通过三个向量唯一定位资源位置。
-
groupId
:定义当前Maven项目隶属组织的名称,通常是域名反写(例如net.csdn) -
artifactId
:定义当前Maven项目的名称,通常是模块名称(例如 order-service、auth) -
version
:定义当前项目版本号
2.2 项目结构
maven-project
|--- src 源代码目录和测试代码目录|--- main 源代码目录|--- java 源代码java文件目录|--- resources 源代码配置文件目录|--- test 测试代码目录|--- java 测试代码java目录|--- resources 测试代码配置文件目录
|--- target 编译、打包生成文件存放目录
|--- pom.xml 项目配置文件
2.3 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- POM模型版本 --><modelVersion>4.0.0</modelVersion><!-- 当前项目坐标 --><groupId>org.example</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!-- 指定项目代码版本、编码等属性 --><properties><maven.compiler.source>20</maven.compiler.source><maven.compiler.target>20</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 项目打包方式,默认为jar --><packaging>jar</packaging><!-- 项目依赖 --><dependencies><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.6</version></dependency></dependencies></project>
3 Maven依赖管理
3.1 依赖配置
依赖:指当前项目运行所需要的jar包。
一个项目中可以引入多个依赖,通过指定依赖的坐标值引入依赖。
<dependencies><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.6</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>
3.2 依赖范围
可以通过使用scope
标签指定依赖的作用范围。
scope值 | 主程序 | 测试程序 | 打包(运行) | 范例 |
---|---|---|---|---|
compile(默认) | Y | Y | Y | log4j |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
test | - | Y | - | junit |
3.3 依赖传递和排除
maven的依赖具有传递性,对于某个配置建立的依赖(直接依赖)它会自动把所依赖的其他jar包也一起导入(间接依赖)。
配置依赖的排除其实就是阻止某些 jar 包的传递,因为这样的 jar 包传递过来可能会和其他 jar 包冲突,一般通过使用exclusion
标签配置依赖的排除
<dependency><groupId>org.example</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!-- 排除依赖,无需指定版本号 --><exclusions><exclusion><groupId>junit</groupId><artifactId>junit</artifactId></exclusion></exclusions>
</dependency>
4 Maven生命周期
Maven的生命周期就是为了对所有的构建过程进行抽象和统一,分为相互独立的clean(清理工作)、default(核心工作)、site(生成报告、发布站点等)共三套。
Maven的生命周期是抽象的,本身不做任何实际工作,实际任务都交由插件来完成。在同一套生命周期中,我们在执行后面的生命周期时,前面的生命周期都会执行。常用的生命周期阶段包括
-
clean:移除上一次构建生成的文件。
-
compile:编译项目源代码。
-
test:使用合适的单元测试框架运行测试(junit)。
-
package:将编译后的文件打包。
-
install:安装项目到本地仓库。
5 参考资料
黑马程序员JavaWeb开发教程-bilibili
超级详细的 Maven 教程(基础+高级)_maven教程-CSDN博客