首先,maven是一个项目管理和综合工具,它能提供给开发人员一个完成的生命周期框架。它使用标准的目录结构和默认构建生命周期。


目录结构:


maven提供给了我们一个标准的目录结构如下

maven 构建 子模块 maven结构_项目管理

这种目录结构能让我们很方便的在对应的位置找到对应的文件。而且秩序将文件防盗对应的位置,maven就可以帮助我们做完其它的事情。


pom简介:


pom.xml放在项目的根目录下,它描述了项目的基本信息,组织信息,依赖关系等等。

简单介绍几个基本内容

maven 构建 子模块 maven结构_maven 构建 子模块_02

如图,其中groupID,artifactID,version合起来就是这个项目的坐标,它是唯一的。

依赖:

如上图所示,该项目可以有许多依赖项目,这些依赖项目可以是自己的项目,也可以使别人开发的项目,这里依赖了servlet的api作为例子。

多项目,继承:

maven 构建 子模块 maven结构_项目管理_03

父节点

属性:

maven 构建 子模块 maven结构_maven 构建 子模块_04

上图配置了一个spring.version和一个jdk.version,这样的好处是当多处需要使用这些属性的时候,可以用${property}来直接引用,而不需要重复添加这个属性(个人理解类似于全局变量)


pom继承:当子项目很多时,很容易出现一些问题,比如依赖版本不一致等等,这个时候可以使用pom中的继承,与面向对象中的继承类似,它可以从父pom中继承后重写或者进行新的增加,可继承项有:

坐标属性,依赖配置,插件配置,一般性信息(如开发者信息)等等。

对于pom而言,maven中几乎所有的项目的pom都是从super pom继承而来,super pom定义了一组默认设置:

默认的文件位置,默认的插件配置,默认的中央仓库配置等等。

pom多模块构建:如图

maven 构建 子模块 maven结构_maven 构建 子模块_05

即使用继承又使用组合。


仓库:

仓库是用于存储maven所有项目共享的一个构件空间。

分类:本地仓库,远程仓库。

本地用作缓存。

远程仓库有很多种,比如中央仓库和一些其它的公共仓库,私服等。当本地仓库没有找到所配置的依赖时,maven会查找远程仓库并将其下载到本地仓库。


构建生命周期简介:

maven有三套独立的生命周期。

clean有以下三个阶段组成:

pre-clean:预处理

clean:移除上一次构建的文件

post-clean:执行一些clean之后的工作

defeat默认的生命周期有23个阶段:(简介几个常用的)

validate:验证项目是否正确,必要信息是否缺少

process-resources:将一些必要的资源文件复制,为以后打包做准备

compile:编译

test:对代码进行单元测试

package:打包

install:将项目安装到本地仓库

deploy(默认生命周期的最后一个阶段):将我们的包上传到远程仓库

site有以下4个阶段:主要用于生成一些文档等等

pre-site

site

post-site

site-deploy


maven是一个插件式的架构,它由一个很小的引擎加上一大堆插件构成的,所有的插件也是maven构件的一部分,也是由maven仓库管理的