一、Maven是什么?
Maven就是项目管理工具,用来构建项目的。也就是清理、编译、测试、运行、打包、安装整个过程都交给Maven来管理,整个过程就是构建。
二、Maven安装与配置
1、官网下载
Maven – 下载 Apache Maven (版本看个人需求)
然后解压(gz包或者zip包)到最好没有中文没有空格的路径。目录结构如下:
编辑
2、配置环境变量
Maven本身就是基于Java写的,所以在安装配置之前,有必要将Java的运行环境安装配置好,JDK安装好。
Windows环境如下:
配置内容同JDK的配置内容一样,也是两部分:一部分是在系统环境变量或者用户环境变量中配置一个MAVEN_HOME;另一部分也是将Maven里面的bin目录追加到Path环境变量后面。
编辑
3、测试安装是否成功:
win+r 然后 cmd 进入命令行 输入mvn -version 或者 maven -v 查看安装的Maven信息以及JDK信息,成功打印说明配置成功。
三、Maven目录结构
- bin:Maven运行脚本、命令
在命令行输入任何一条 mvn 命令时,实际上就是在调用这下些脚本。不带 cmd 后缀的命令就是 UNIX 平台的 shell 脚本,带 cmd 的是基于Windows平台的脚本。
2. boot:该目录只包含一个文件,plexus-classworlds-2.7.0.jar(plexus-classworlds 是一个类加载器框架,Maven使用该框架加载自己的类库)。
3. conf:配置文件 setting.xml 文件,修改该文件就可以在机器上全局的制定Maven的行为。但一般情况下,更倾向于复制该文件到 ~(用户User目录)/.m2/ 目录下,然后修改该文件,在用户范围内制定Maven的行为。
4.lib:包含Maven运行时所需要的Java类库,包括第三方的依赖类库。用户可以在这个目录中找到Maven内置的超级POM:
编辑
5. LICENSE.TXT:记录了 Maven 使用的软件许可证 Apache License Version 2.0。
6. NOTICE.txt:记录了maven包含的第三方软件。
7. README.txt:记录了maven的简要介绍。包括安装需求及如何安装的简要指令等。
四、Maven 优点
- Maven 不仅是构建工具,它还是依赖管理工具和项目管理工具,提供了中央仓库,能够帮我们自动下载构件。
- 为了解决的依赖的增多,版本不一致,版本冲突,依赖臃肿等问题。他通过一个坐标系统来精准定位每一个构件(artifact)。
- 还能帮助我们分散在各个角落的项目信息,包括项目描述,开发者列表、版本控制系统、许可证、缺陷管理系统地址。
- Maven还为全世界的开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源软件(下载贼慢,支持正版 _ 但我用镜像!!!)。通过衍生工具(Nexus)我们还能对其进行快速搜索。
- Maven 对于目录结构有要求,约定优于配置,用户在项目切换就省去了学习成本。
五、关于Maven项目(工程)约定目录结构
编辑
Maven约定目录结构.
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
--/src
------/main #存放主程序java代码和配置文件
------------/java #程序包和包中的java文件
------------/resource #java程序中要使用的配置文件
------/test #测试程序的代码文件(可以没有)
------------/java #测试程序包和包中的java文件
------------/resource #测试程序中要使用的配置文件
-----/pom.xml #maven的核心文件(maven项目必须有)
六、Maven 常用命令
- mvn clean 清理编译后的目录
- mvn compile 编译,只编译main目录,不编译test中代码
- mvn test-compile 编译test目录中代码
- mvn test 运行test里边代码测试
- mvn package 打包
- Java项目打成 jar 包
- web 项目打成war包
- mvn install 发布部署项目到本地仓库,在本地Repository中安装 jar ,供其他工程使用
- tomcat run 一键构建项目
- mvn site 生成项目的相关文档和生成文档相关的元素,包括 name、url 和description等
七、Maven 的“三大生命周期”
- clean Lifecycle:在进行真正的构建之前进行一些清理工作。mvn clean
clean的目的是清理项目。
每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段。有Clean生命周期,也有clean阶段。
包含3个阶段:
1.pre-clean 执行一些清理前需要完成的工作
2.clean 清理上一次构建过程中生成的文件,比如编译后的class文件等
3.post-clean 执行一些清理后需要完成的工作
2. default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。
generate-resources: 产生主代码中的资源在classpath中的包
process-resource: 复制并处理资源文件,至目标目录,准备打包。
compile: 编译项目的主源码.一般来说:编译src/main/java目录下的java文件至项目输出的主classpath目录中
test-compile:编译项目的测试代码,是编译src/test/java目录下的java文件至项目输出的测试classpath目录中
test: 使用单元测试框架运行测试,测试代码不会被打包或部署.
package:打包成可发布的格式
install:将包安装到Maven本地仓库,供本地其他Maven项目使用
deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用
PS:运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。此外,Maven的插件机制是完全依赖Maven的生命周期的,因此理解生命周期至关重要。
3. site Lifecycle: 生成项目报告,站点,发布站点。
目的:建立和发布项目站点
pre-site:执行一些在生成项目站点之前需要完成的工作.
site :生成项目站点文档
post-site :执行一些在生成项目站点之后需要完成的工作.
site-deploy :将生成的项目站点发布到服务器上
八、scope依赖作用域
也可以称作依赖范围:maven中的的依赖,会根据场景和所处阶段发生变化。scope属性有五种:
编辑
注:system_不推荐使用,使用system作用域不会去本地仓库寻找依赖,要指定本地绝对路径。
九、maven能够实现自动化构建.核心maven的9个核心概念
- POM:一个文件 名称为pom.xml,pom翻译过来叫项目对象模型
- 约定的目录结构:maven项目的目录和文件的位置都是规定的
- 坐标:是一个唯一的字符串,用来表示资源
- 依赖管理:管理项目中用到的jar文件
- 仓库管理:资源存放位置
- 生命周期:maven工具构建项目的过程就是它生命周期
- 插件和目标:执行maven构建的时候用的工具叫插件
- 继承
- 聚合