maven(1)
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)。
Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。
Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来:
- 创建 jar 文件
- 创建 war 文件
- 编译代码文件
- 代码单元测试
- 创建工程文档
- 创建工程报告
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 包含了一些可以被继承的默认设置。因此,当 Maven 发现需要下载 POM 中的 依赖时,它会到 Super POM 中配置的默认仓库 http://repo1.maven.org/maven2 去下载。
<parent> <groupId></groupId> <artifactId></artifactId> <version></version> <relativePath></relativePath> </parent>
可用上述结构显式地继承另一个POM文件。
5.存储库
在 Maven 的术语中,仓库是一个位置(place)。
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
Maven 仓库有三种类型:
- 本地(local)
- 中央(central)
- 远程(remote)
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 存放测试框架或其他工具的配置文件