25 KiB
title | tags | categories | keywords | date | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Maven POM文件编辑技巧要点 |
|
|
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
根元素和groupId
、artifactId
、verion
这三个必需元素。
Super POM是Maven的默认POM,被所有的POM继承。Super POM可以通过命令mvn help:effective-pom
查看。
Maven构建生命周期
所有常用Maven命令,实际上调用的都是Maven的各个生命周期动作,也就是命令行格式mvn [options] [goals] [phases]
中的[phase]
。
在Maven中有三个标准生命周期:clean
、default
、site
,每个生命周期都包含一定的阶段(phase
)。
Clean生命周期
Clean周期主要执行项目的清理工作,会移除上一次构建生成的所有文件。Clean周期包含以下几个阶段。
pre-clean
,执行一些清理构建文件之前需要完成的操作。clean
,执行移除构建文件的操作。post-clean
,在移除构建文件之后需要完成的操作。
当执行命令mvn post-clean
时,位于post-clean
阶段之前的pre-clean
和clean
阶段都会按照预定顺序执行。这种阶段的执行模式对于其他声明周期也同样起效。
Site生命周期
Site周期主要用来创建报告文档、部署站点等。主要包含四个阶段:
pre-site
,在生成站点之前需要完成的操作。site
,生成站点的文档。post-site
,在生成站点之后需要完成的工作,并且为部署做准备。site-deploy
,将生成的站点文档部署到特定的服务器上。
Default生命周期
Default周期主要用于构建应用,也称为Build周期,是三个标准周期中最复杂的一个,有23个阶段。
validate
,校验项目是否正确并且已经具备的信息是否可以完成项目构建。initialize
,初始化构建状态。generate-sources
,生成包含在编译阶段中的全部源代码。process-sources
,处理生成的源代码。generate-resources
,生成将会包含在项目包中的资源文件。process-resources
,复制和处理资源到目标目录。compile
,编译全部源代码。process-classes
,处理编译生成的文件,进行优化。generate-test-sources
,生成包含在编译阶段中的全部测试源代码。process-test-sources
,处理生成的测试源代码。generate-test-resources
,为测试创建资源文件。process-test-resources
,复制和处理测试资源到目标目录。test-compile
,编译全部测试源代码。process-test-classes
,处理和测试源码编译生成的文件。test
,运行单元测试。prepare-package
,在打包之前,执行全部必要操作。package
,将编译后的代码打包为可分发格式文件。pre-integration-test
,执行集成测试之前所必要的操作。integration-test
,部署项目到集成测试环境中。post-integration-test
,执行完集成测试之后进行的必要操作。verify
,运行指定的检查来确定项目包有效且达到指定质量标准。install
,将项目包安装到本地仓库,使其可以作为其他项目的依赖。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 %}