4-Maven核心概念

1. POM文件

 每个Maven工程中都会有一个pom配置文件,它全称 Project Object Model。pom是一个xml文件, 是maven工作的基础, 在执行goal时, maven会去项目根目录下读取pom.xml获得需要的配置信息pom文件中包含了项目的信息和maven build项目所需的配置信息, 通常有项目信息(如版本、 成员)、 项目的依赖、 插件和goal、 build选项等等pom是可以继承的,通常对于一个大型的项目或是多个module的情况, 子模块的pom需要指定父模块的pom。

 可以说我们使用maven进行项目管理实际上就是在跟pom文件打交道。

2. 构件(artifact)

 构建就是一个项目将要产生的文件, 可以是jar文件, 源文件, 二进制文件, war文件, 甚至是pom文件。

 每个artifact都由groupId:artifactId:version组成的标识符唯一识别。 需要被使用(依赖)的artifact都要放在maven仓库中。artifact的标识也成为构建的坐标, groupId通常使用创建构件的组织名称或者域名的反转(比如: org.springframework) ; artifactId是构件的名称, 通常在一个组织创建的构件中是唯一的(比如: spring-core) ; version就比较好理解了, 构件的版本信息, 随着构件的升级版本号依次升级(比如:4.0.9.RELEASE),看下面的例子:

  • 同一个构件的不同版本:
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>4.0.9.RELEASEversion>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>4.1.0.RELEASEversion>
  • 不同构件:
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.4.0version>
<groupId>com.google.code.gsongroupId>
<artifactId>gsonartifactId>
<version>2.6.2version>

3. 仓库(repositories)

 maven仓库可以分为本地库(local) 和远程库(remote)。用于存储maven项目的一块空间。

 本地库通常位于本机的~/.m2/repository文件夹(可以通过settings.xml中的localRepository进行修改),本地仓库每个安装了maven的用户都有,存放着用户的maven工程以及工程的依赖工程文件。

 远程库最常见的是maven中央库, 此外也会有一些私服库用于企业内部。国内常用的仓库列表。

4. 构建生命周期(Build Lifecycle)

 maven将工程(Project) 的构建过程理解为不同的生命周期(LifeCycle)和阶段(Phase)。 在工程的构建过程中, 存在着不同的生命周期, 这些生命周期互相独立, 之间也没有一定的顺序关系。 每个生命周期又划分为不同的阶段(Phase) 。 阶段之间有明确的顺序关系, 同一生命周期内的阶段必须按顺序依次
执行。

 maven内置了三个生命周期, 并为每个生命周期内置了一些阶段。 下面列举出maven内置的生命周期及主要的阶段:

4-Maven核心概念_第1张图片

 1. default: 构建(Build)

  • validate: 验证项目是否正确, 所有必需的信息是否可用。
  • compile: 编译项目中的代码。
  • test: 用相关的单元测试框架测试编译后的代码, 这些运行的测试并不会随项目打包和布署。

  • package: 将编译后的代码打包成相应的格式文件, 如jar包。

  • integration-test: 如果需要在一个综合环境中运行我们的测试, 这个阶段将会运行和布署项目到该环境中。

  • verify: 检查项目的包是否正确和符合要求。

  • install: 将包安装到本地maven仓库, 可以让其他项目作为依赖使用该包。
  • deploy: 将包发布到远程的maven仓库, 并提供给其他开发者使用。

 2. clean: 清理
- pre-clean 准备清理
- clean 执行清理工作
- post-clean 执行清理后的后续工作


 3. site: 生成项目文档和站点
- pre-site 准备生成
- site 生成项目站点和文档
- post-site 执行生成文档后的后续工作
- site-deploy 发布项目文档


5. 目标(goal)和插件(plugin)

 上面介绍的都是maven的各种概念,而具体实现由各种插件(Plugin)进行实现。插件实现的功能叫做目标(goal),一个插件可以实现一个或多个目标。

 maven可以规定使用实现目标的插件,还可以通过配置pom文件来决定在哪个阶段执行(Execution)哪些目标操作。 甚至可以把一个Goal绑定到多个Phase, 以实现复用。

 maven内置了一些默认的插件,并根据不同的工程packing类型在各个phase中默认绑定了一些goal。 下表中列出default生命周期中各阶段默认绑定的goal:

4-Maven核心概念_第2张图片

你可能感兴趣的:(JavaEE,maven)