1.简介
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。(它是一个强大的Java项目构建工具,基于POM(项目对象模型)文件,可用于项目构建、依赖模块管理和Javadoc生成等。)
2.构建工具
构建工具是软件构建过程自动化的一种工具。一个软件项目的构建通常包含以下几部分:
- 生成源代码(如果项目使用了自动生成部分源代码)
- 从源代码生成文档(如javadoc)
- 编译源代码
- 将编译好的代码打包到ZIP包或JAR包中
- 把打包好的文件部署到服务器或存储库
某些软件项目可能还包含其他特殊构建任务,这些任务都可以添加到maven的构建过程中自动化执行。
构建过程自动化的好处是,避免出错,效率更高,人工执行构建过程比较慢且容易出错。
3.工作原理
3.1 Maven 读取 pom.xml
maven根据pom.xml文件中的配置来执行命令。
3.2 下载依赖jar包到本地库(Repository)
pom.xml文件中包含了依赖项的配置,依赖项是项目使用的第三方库,即外部的jar文件,如果本地库没有,那么Maven将从中央库下载依赖项,并存放在本地库中。
3.3 执行构建过程/阶段/目标
项目的构建通常包含数个相互独立的任务,可以独立执行,如生成文档,构建jar包等。单个任务的执行过程被称为一个构建生命周期,构建生命周期由一系列的构建阶段组成,每个阶段包含一系列的构建目标。
3.4 执行插件
插件是构建目标的集合,也称为MOJO (Maven Old Java Object)。
3.5 构建profile
可以构建项目的不同版本。
4.POM
4.1 概念
POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
POM 中可以指定以下配置:
- 项目依赖
- 插件
- 执行目标
- 项目构建 profile
- 项目版本
- 项目开发者列表
- 相关邮件列表信息
4.2 标签
节点 | 描述 |
---|---|
project | 工程的根标签 |
modelVersion | 指定模型版本,应为4.0 |
groupld | 这是工程组的标识。它在一个组织或者项目中通常是唯一的。 |
artifactld | 这是工程的标识。它通常是工程的名称。 |
version | 这是工程的版本号。 |
4.3 pom继承
父(Super)POM是 Maven 默认的 POM。所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 包含了一些可以被继承的默认设置。
<parent>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<relativePath></relativePath>
</parent>
可用上述结构显式地继承另一个POM文件。
5.存储库
Maven Repository/存储库,顾名思义是一个存储JAR文件的仓库,Maven根据项目中pom.xml文件中提供的jar包依赖信息,从存储库中查找并获取需要的jar包。
Maven Repository有3种类型:
- Local Repository – 本地库
- Central Repository – 中央库
- Remote Repository – 远程库
Maven搜索依赖项时,会按照:本地库、中央库和远程库的顺序进行。
本地库可以通过修改settings.xml(apache-maven-3.6.3\conf\)文件来更改maven本地存储库的位置。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:\Java\maven-repository</localRepository>
<!-- localRepository
localRepository 后方是我们想要修改地本地库存储的位置。
6.项目结构
|--name |--pom.xml Project Object Model 项目对象模型,Maven 的核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。 |--src |--main 存放主程序 |--java 存放java源文件 |--resources 存放框架或其他工具的配置文件 |--webapp 存放关于网页的数据 |--index.jsp 默认访问 |--static |--default 存放前端要用的框架,图片,css,js等文件 |--WEB-INF |--web.xml 配置文件 |--page 存放前端页面,每个板块各为一个文件夹 |--test 存放测试程序 |--java 存放测试java源文件 |--resources 存放测试框架或其他工具的配置文件