01.Maven简介
发布于 2022年 04月 30日 11:34
Maven简介
Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
在多个开发团队一起工作时,Maven可以按照标准设置在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可以重复使用,Maven让开发人员的工作更轻松,同事创建报表、检查、构建和测试自动化设置。
Maven提供的管理有:
- Builds
- Documentation
- Reporting
- Dependecies
- SCMs
- Release
- Distribution
- mailing list Maven简化和标准化项目的建设过程。处理编译、分配、文档、团队协作和其他任务的无缝连接。Maven增加可重用性并建立相关性任务。
标准化的目录结构:Maven的项目目录结构是固定的,和具体的开发环境无关(eclipse和idea有自己的默认项目目录结构)。
Maven安装
在Windows安装时,需要下载Maven的zip文件,并解压到想要的目录中。
安装要求
必须配置好JavaSDK的路径,和Java_HOME环境变量。
在Path中添加Maven的bin目录。注意:请尽量使用 JDK 1.8 及以上版本
JDK 和 JAVA_HOME
确保已安装 JDK,并设置 JAVA_HOME 环境变量到 Windows 环境变量。
下载 Apache Maven
下载地址:maven.apache.org/download.cg…
添加 MAVEN_HOME
添加 MAVEN_HOME 环境变量到 Windows 环境变量,并将其指向你的 Maven 文件夹。
添加到环境变量 - PATH
验证
使用命令:mvn -version
输出:
C:\Users\Lusifer>mvn -version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: D:\apache-maven-3.5.2\bin\..
Java version: 1.8.0_152, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_152\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
Maven 本地仓库
概述 Maven 的本地资源库是用来存储所有项目的依赖关系(插件 Jar 和其他文件,这些文件被 Maven 下载)到本地文件夹。很简单,当你建立一个 Maven 项目,所有相关文件将被存储在你的 Maven 本地仓库。
默认情况下,Maven 的本地资源库默认为 .m2 目录文件夹:
- Unix/Mac OS X:~/.m2
- Windows:C:\Documents and Settings{your-username}.m2
通常情况下,可改变默认的 .m2 目录下的默认本地存储库文件夹到其他更有意义的名称,例如, maven-repo 找到 {M2_HOME}\conf\setting.xml, 更新 localRepository 到其它名称。
执行之后,新的 Maven 本地存储库现在改为 D:/apache-maven-3.5.2/repo
Maven 中央仓库
概述
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 repo1.maven.org/maven2/ 查找下载。
Maven 依赖机制
概述
在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么?
Maven POM
POM是Maven和项目之间的中间件。
基本结构:
<?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>com.bailiang</groupId>
<artifactId>hello-maven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependecies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifectId>
<version>1.2.17</version>
</dependency>
</dependecies>
</project>
说明
节点 | 描述 |
---|---|
groupId | 项目组的编号,在组织或项目中通常是唯一的,和Java包名命名规则相同 |
artifactId | 项目的编号,通常是项目名称。定义了artifact在存储库中的位置 |
version | 项目的版本号 |
packaging | 项目发布时的打包方式,war或jar |
Maven 插件
插件类型
Maven 提供以下两种类型插件:
类型 描述
- 构建插件 在生成过程中执行,并在 pom.xml 中的 元素进行配置
- 报告插件 在网站生成期间执行,在 pom.xml 中的,元素进行配置
以下是一些常见的插件列表:
- clean 编译后的清理目标,删除目标目录
- compiler 编译 Java 源文件
- surefile 运行JUnit单元测试,创建测试报告
- jar 从当前项目构建 JAR 文件
- war 从当前项目构建 WAR 文件
- javadoc 产生用于该项目的 Javadoc
- antrun 从构建所述的任何阶段运行一组 Ant 任务
Maven 快照
说明
快照版:必须使用 X.Y.Z-SNAPSHOT的格式,如果依赖的是快照版,则刷新Maven时,会自动下载最新的代码;如果没有-SNAPSHOT,而是任何其他字符,都是发行版,发行版需要手动修改版本号来加载最新代码。
语义化版本规范: a.b.c
- c 每修复一个bug,数值增1
- b 功能每增加、删除、修改一个,数值增1
- a 工程的架构发生重大变化,比如核心库更换、核心功能重写等,数值增1
如果想要快照版自动更新最新代码,必须设置Maven的Always update snapshots,如下图
Maven 常用命令
本章节只提供 Maven 使用时的一些基本命令
清除产生的项目
- mvn clean
编译源代码
- mvn compile
打包
- mvn package
只打包不测试(跳过测试)
- mvn -dmaven.test.skip=true
安装到本地仓库
- mvn install
源码打包
- mvn source:jar 或 mvn source:jar-no-fork
web项目的目录结构
{myproject}
---->[src]
|--->[main]
|--->[java] 存放所有源码
|--->各个package
|--->[resources] 存放资源文件,如xml配置文件
|--->spring-context.xml
|--->spring-mvc.xml
|--->其他配置文件
|--->[webapp] 存放web文件,如jsp
|--->[WEB-INF]
|--->web.xml web配置文件
|--->index.jsp 首页
|--->[test]
|--->[java] 测试
---->pom.xml Maven项目配置文件