使用 Maven 构建时几个重要的概念
构建流程
Maven的构建生命周期(Lifecycle)、阶段(Phase)和目标(Goal)是Maven构建过程的核心概念。它们共同定义了Maven如何构建和管理项目。
总结来说,Maven的构建生命周期定义了构建过程中的主要步骤,阶段是生命周期中的具体步骤,而目标则是每个阶段实际执行的任务。通过这种方式,Maven提供了一种灵活且可扩展的构建系统,允许开发人员根据需要自定义构建过程。
生命周期
Maven定义了三个主要的构建生命周期:clean
、default
和site
。
每个生命周期都包含一系列的阶段,这些阶段是有序的,并且每个阶段都执行特定的任务。
clean
:清理项目,删除之前构建生成的文件。default
:处理项目的编译、测试、打包、安装和部署等。site
:生成项目的文档和报告。
阶段
每个构建生命周期都由一系列的阶段组成。
阶段是有序的,它们定义了构建过程中的一个步骤。
例如,default
生命周期包括以下阶段:validate
、compile
、test
、package
、verify
、install
、 deploy
……
validate
:验证项目是否正确,所有必要的信息都是可用的。compile
:编译项目的源代码。test
:使用适当的单元测试框架运行测试,这些测试不应要求代码被打包或部署。package
:打包编译后的代码,在JAR或WAR等格式中。verify
:对集成测试的结果进行检查,以确保质量达标。install
:将包安装到本地仓库,以供其他项目使用。deploy
:在构建环境中完成,将最终的包复制到远程仓库以共享给其他开发者和项目。
目标
每个阶段可以绑定一个或多个目标。目标通常是非常具体的任务,如spring-boot:run
(启动Springboot)。目标可以被直接调用,也可以在构建生命周期中的某个阶段自动执行。
例如,当你运行 mvn compile
命令时,Maven会执行 default
生命周期到 compile
阶段为止,compile
这个阶段绑定了 compile
目标(即 compiler:compile
),用于编译项目源代码。
构建插件
使用 Maven 构建项目就是执行生命周期到指定的阶段为止,每个阶段会执行自己默认的若干个目标。目标是最小任务单元。
每个阶段具体要执行什么目标,实际上是通过使用插件进行绑定的。比如 compile
阶段通过插件 maven-compiler-plugin
在 compile
阶段绑定了 compiler:compile
,在 test-compile
阶段绑定了 compiler:testCompile
,这在插件主页可以查到。可以写成如下的配置文件,阶段及其绑定的若干个目标被包括在一个 execution
中,对于每个阶段,都可以有独有的配置项(configuration
)。
1 | <build> |