0%

runtime/java/maven/maven╜щ╔▄

Maven 是什么?自动化构建工具

  1. 主要负责依赖管理
  2. 负责构建步骤

一般构建过程中的环节:

  1. 清理:将以前编译得到的旧文件的class字节码删除,为下一次编译做准备
  2. 编译:将java源程序编译成class字节码文件
  3. 测试:自动测试调用junit程序
  4. 报告:测试程序执行的结果
  5. 打包:类似动态web工程打包为war包,java工程打包jar包
  6. 安装:将打包得到的文件复制到”仓库”中的指定位置
  7. 部署:将工程部署到相应环节

安装Maven

  1. 检查JAVA_HOME环境变量
  2. 解压maven程序的压缩包
  3. 配置maven环境变量
    1. MAVEN_HOMEM2_HOME 配置maven目录
    2. maven bin目录放到path环境变量下
  4. mvn -v命令查看打印mvn版本信息

Maven的核心概念

1. 约定的目录结构

1
2
3
4
5
6
7
8
|---src
|---|---main
|---|---|---java
|---|---|---resources
|---|---test
|---|---|---java
|---|---|---resources
|---pom.xml

2. POM

含义:Project Object Model 项目对象模型

pom.xml Maven工程核心配置文件,与构建过程相关的一切设置都在这个文件中进行设置。

样例:

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
<?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>org.example</groupId>
<artifactId>test-sendemail</artifactId>
<version>1.0-SNAPSHOT</version>

<properties> <!-- 属性 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>

<dependencies> <!-- 依赖管理模块 -->
<dependency>
</dependency>
</dependencies>

<build> <!-- 构建管理模块 -->
<plugins>
</plugins>
</build>
</project>

Tips: [官方文档POM介绍] http://maven.apache.org/guides/introduction/introduction-to-the-pom.html

3. 坐标

1
2
3
4
5
<dependency>
<groupId>org.projectlombok</groupId> <!-- 公司名或者组织名称 -->
<artifactId>lombok</artifactId> <!-- 模块名 -->
<version>1.18.4</version> <!-- 版本 -->
</dependency>

4. 依赖

Maven 解析依赖信息时会到本地仓库中查找依赖的jar包。比如A.jar 依赖于 B.jar。

依赖的范围:既<scope>标签的可选配置:compile、test、provided、runtime、system、import

1
2
3
4
5
6
<dependency>
<groupId>org.projectlombok</groupId> <!-- 公司名或者组织名称 -->
<artifactId>lombok</artifactId> <!-- 模块名 -->
<version>1.18.4</version> <!-- 版本 -->
<scope>test</scope> <!-- 依赖范围 -->
</dependency>

![image-20210604103240453](D:\Git Repertory\MySelf\blog-hexo\src\source_posts\runtime\java\maven\maven介绍\image-20210604103240453.png)

5. 仓库

分为本地仓库,远程仓库

本地仓库:当前计算机上Maven下载的包的仓库

远程仓库:

1. 私服:本地局域网搭建的仓库,类似Nexus
2. 中央仓库:假设在因特网上,未全世界所有Maven工程服务
3. 中央仓库镜像:中央仓库的镜像地址

6. 生命周期、构建插件、目标

生命周期

Maven生命周期定义了各个构建环节的执行顺序。

Maven 有三套互相独立的生命周期,分别是:

  1. Clean Lifecycle 在进行真正构建之前进行一些清理工作

    • pre-clean 在clean之前完成的工作
    • clean 移除上一次构建生成的文件
    • post-clean 在clean之后完成的工作
  2. (重要) Default Lifecycle 构建的核心部分,编译,测试,打包,安装,部署等等

    ![img](D:\Git Repertory\MySelf\blog-hexo\src\source_posts\runtime\java\maven\maven介绍\企业微信截图_16227874305462.png)

  3. Site Lifecycle 生成项目报告、站点。在mvn site命令的生命周期流程中

    • pre-site
    • site
    • post-site
    • site-deploy

      插件和目标

生命周期的各个阶段只是定义该阶段执行什么任务,具体来进行执行的则是插件。

Maven 常用命令

mvn clean 清理
mvn compile 编译主程序 main -> java
mvn test-compile 编译测试项目 test -> java
mvn test 执行测试
mvn package打包
mvc install 将当前包装入本地仓库
mvc site 生成站点信息