Maven 简介
Maven 是 apache 下的一个纯 java 开发的一个开源项目,它是一个项目管理工具
我们平时开发中,除了编写源代码,每天有一部分时间都花在了编译、运行单元测试、生成文档、打包和部署上面,这就是构建。多次重复的做这种工作,浪费了大量我们的时间,所以我们可用 Maven 来开发项目。Maven 将项目构建的过程进行标准化,每个阶段使用一个命令完成,又或者一个命令完成构建,也就是一键构建
Maven 的好处
1. 一键构建
2. 依赖管理。
maven 工程不用 maven 工程不用手动导入 jar 包,通过 maven 的一个核心配置文件定义坐标可重远程仓库下载
方便且不易出错。
3. maven 的跨平台,可在 window、linux 上使用。
4. maven 遵循规范开发,大大提高大型团队的开发效率,降低项目的维护成本
大公司都会优先考虑使用 maven 来构建项目
Maven 的安装
1. 先从官网下载 Maven,我这里下载的最新版 apache-maven-3.6.0-bin
2. 下载成功后要配置 Maven 环境变量
首先新建一个系统变量 MAVEN_HOME
然后修改 Path 环境变量
3.测试是否安装成功,在系统命令行中执行命令:mvn –v
显示上面信息,表示安装成功!
4.在 Maven 安装的目录的 conf 下有 settings.xml 文件,这是 Maven 的全局配置文件
我们可以在这儿配置本地仓库的地址,仓库后面会详解,里面会存放 Maven 下载的插件等
仓库地址默认系统的用户目录下的 .m2/repository
我们自己来改变一下,改到如下目录。(具体哪里随意,建议 maven/repository 下)
常见的 Maven 命令
Maven 的命令要在项目的根目录中去执行
mvn clean: 清除命令,清除已经编译好的 class 文件,具体说清除的是 target 目录中的文件
mvn compile: 编译命令
mvn test: 测试命令,该命令会将 main 和 test 目录中的源码进行编译,并执行 test 程序
mvn package: 打包命令
mvn install: 安装命令,会将打好的包,安装到本地仓库
命令是可以组合的:
mvn clean compile:先清空再编译
mvn clean test命令:先执行 clean,再执行 test,通常应用于测试环节
mvn clean package:先执行 clean,再执行 package,将项目打包,通常应用于发布前
执行过程:
清理————清空环境
编译————编译源码
测试————测试源码
打包————将编译的非测试类打包
mvn clean install:先执行 clean,再执行 install,将项目打包,通常应用于发布前
执行过程:
清理————清空环境
编译————编译源码
测试————测试源码
打包————将编译的非测试类打包
部署————将打好的包发布到资源仓库中
Maven 生命周期
Maven 还没出现之前,项目构建的生命周期就存在。程序员每天都对项目进行清理、编译、测试、打包等工作,各个公司都一样,有的是手工完成,有的可以编写自动化脚本完成,虽然过程可能有点细微的不一样,但非常类似。Maven 的生命周期就是对所有的构建过程进行抽象和统一,总结了一套高度完善、易扩展的生命周期,包含了清理、编译、测试、打包、部署等几乎所有的构建步骤。Maven 的生命周期是抽象的,不做任何事情,都由各种插件完成。简单的说,生命周期可以理解为构建步骤的集合。
Maven 有 3 套生命周期,clean、default、site。生命周期包括多个阶段,这些阶段有一定的顺序,并且执行后面的阶段前面的阶段也会自动执行。例如clean的生命周期包含 pre-clean、clean、post-clean,当用户执行 pre-clean 命令时,只有 pre-clean 执行,当用户执行 clean 时,会执行 pre-clean 和 clean 命令,当用户执行 post-clean 命令时,会执行三个命令。
clean 生命周期
pre-clean:执行一些清理前需要完成的工作
clean:清理上一次构建生成的文件
post-clean:执行一些清理后需要完成的工作
default 生命周期
validate
generate-sources
process-sources
generate-resources
process-resources
compile 编译主项目的源代码。
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
test-compile。
process-test-classes
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
ps:重点掌握有解释的几个即可,其他了解,知道有这么一回事即可!
site 生命周期
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上
PS: Maven 的生命周期了解即可!
M2E 插件的安装与配置
我们的项目一般都是在 IDE 中进行编写,Eclipse 有一款强大的 Maven 插件 M2Eclipse。新版的 Eclipse中 都自带这款插件。但是 eclipse 自带的 maven 插件 版本有点低,我们需要手动配置一下,修改成我们下载的最新 Maven
打开 eclipse,在导航栏 window->preferrences->Maven
add 你下载的 Maven
其次,还得配置一下 maven 的主配置文件 setting.xml 具体在哪里
第一个 Maven 项目
我们已经配置好了 M2E,那怎么使用 M2E 呢?下面我们通过一个 maven 工程来学习 M2E 的一些基本操作。
1.我们在 Eclipse 中创建一个 Maven 项目,选择 new->Maven->Maven Project,
勾选第一个方框跳过骨架选择,选择默认的工作空间即可,点击 next
ps: 这里我们选择跳过骨架选择是因为让 maven工程创建完成就有完整的 maven 结构,
否则还得自己添加一些文件夹,造成不必要的麻烦
2. 输入坐标。(具体什么是坐标,后面会讲)
3. 点击 finish ,完成创建
这里需要解释一下 Maven 项目的结构
Project
|--src(源码包)
|--main(正常的源码包)
|--java(.java 文件的目录)
|--resources(资源文件的目录)
|--test(测试的源码包)
|--java
|--resources
|--target(class 文件、报告等信息存储的地方)
|--pom.xml(maven 工程的描述文件)
4.在项目上右键run as会出现一些常用的 Maven 命令
如果这些命令不能满足我们要求,我们需要别的命令怎么办呢?我们只需要选择 Maven build… 就可以自己输入Maven命令,在这里输入Maven 命令不需要加 mvn。输入命令完成点击 run 即可运行
ps:部分内容整理于网络!如有不当之处,请私聊,多多指教!