blog/source/_posts/maven-pom-tips.md
2021-06-09 07:23:16 +08:00

25 KiB
Raw Blame History

title tags categories keywords date
Maven POM文件编辑技巧要点
JVM
Java
Maven
POM
JVM
构建工具
Maven,pom,pom.xml,构建,dependency 2021-06-09 07:22:33

Maven作为一个老牌的项目构建工具虽然在构建速度上不及Gradle的多线程构建快但是使用XML文件作为构建配置还是拥有不少好处的起码在进行配置的时候不会像Gradle一样自由的感觉无从下手。

项目对象模型POM是Maven管理项目的基本工作单元一般采用XML编写其中包含了项目基本信息、构建信息以及依赖信息等。在Maven执行任务时会在当前目录中寻找POM并从中读取所需的配置信息然后执行相关任务。POM一般在目录中以pom.xml文件的形式存在。每个POM文件中都至少需要project根元素和groupIdartifactIdverion这三个必需元素。

Super POM是Maven的默认POM被所有的POM继承。Super POM可以通过命令mvn help:effective-pom查看。

Maven构建生命周期

所有常用Maven命令实际上调用的都是Maven的各个生命周期动作也就是命令行格式mvn [options] [goals] [phases]中的[phase]

在Maven中有三个标准生命周期cleandefaultsite,每个生命周期都包含一定的阶段(phase)。

Clean生命周期

Clean周期主要执行项目的清理工作会移除上一次构建生成的所有文件。Clean周期包含以下几个阶段。

  1. pre-clean,执行一些清理构建文件之前需要完成的操作。
  2. clean,执行移除构建文件的操作。
  3. post-clean,在移除构建文件之后需要完成的操作。

当执行命令mvn post-clean时,位于post-clean阶段之前的pre-cleanclean阶段都会按照预定顺序执行。这种阶段的执行模式对于其他声明周期也同样起效。

Site生命周期

Site周期主要用来创建报告文档、部署站点等。主要包含四个阶段

  1. pre-site,在生成站点之前需要完成的操作。
  2. site,生成站点的文档。
  3. post-site,在生成站点之后需要完成的工作,并且为部署做准备。
  4. site-deploy,将生成的站点文档部署到特定的服务器上。

Default生命周期

Default周期主要用于构建应用也称为Build周期是三个标准周期中最复杂的一个有23个阶段。

  1. validate,校验项目是否正确并且已经具备的信息是否可以完成项目构建。
  2. initialize,初始化构建状态。
  3. generate-sources,生成包含在编译阶段中的全部源代码。
  4. process-sources,处理生成的源代码。
  5. generate-resources,生成将会包含在项目包中的资源文件。
  6. process-resources,复制和处理资源到目标目录。
  7. compile,编译全部源代码。
  8. process-classes,处理编译生成的文件,进行优化。
  9. generate-test-sources,生成包含在编译阶段中的全部测试源代码。
  10. process-test-sources,处理生成的测试源代码。
  11. generate-test-resources,为测试创建资源文件。
  12. process-test-resources,复制和处理测试资源到目标目录。
  13. test-compile,编译全部测试源代码。
  14. process-test-classes,处理和测试源码编译生成的文件。
  15. test,运行单元测试。
  16. prepare-package,在打包之前,执行全部必要操作。
  17. package,将编译后的代码打包为可分发格式文件。
  18. pre-integration-test,执行集成测试之前所必要的操作。
  19. integration-test,部署项目到集成测试环境中。
  20. post-integration-test,执行完集成测试之后进行的必要操作。
  21. verify,运行指定的检查来确定项目包有效且达到指定质量标准。
  22. install,将项目包安装到本地仓库,使其可以作为其他项目的依赖。
  23. deploy,将项目包部署到远程仓库使其可以与其他开发者共享。

POM文件结构

POM文件在编辑的时候可以依照以下标签解释内容来完成编辑。

{% codeblock lang:xml wrap:true %}

4.0.0

com.example

app

1.0.0-SNAPSHOT

jar

Application

jira Project Manager Architect repo Windows XP Windows x86 5.1.2600 mavenVersion 2.0.3 banseon-repository-proxy banseon-repository-proxy http://192.168.1.169:9999/repository/ default org.apache.maven maven-artifact 3.8.1 jar test spring-core org.springframework true {% endcodeblock %}