Maven的设计哲学是Convention over configuration(惯例先于配置)。在设计之初,Maven就确定了三个常见的工作流程,流程固定,流程节点可配置。
总体的架构
Maven的工作流程分三层:lifecycle(流程),phase(节点),goal(任务)。(括号内的内容为我个人理解的翻译为中文的意思,非直译)。lifecycle定义一系列的phase,每一个phase上挂任意个goal(goal由plugin提供)。与工作流相似,maven驱动流程的运行,单个节点可以定制,具体要做些什么,可以是0个,1个,或者多个任务。理论上来讲,lifecycle确定,那么phase就确定了,不能新增或者删除(可以空跑),phase与goal之间是最灵活的,可以定制某个phase,具体可以干什么。
phase概览
maven自己提供三个lifecycle:clean,build,site。它们的pahse分别如下:
phase与goal如何关联
phase与goal的关联,有两条途径。
- package的内建定义
maven定义了好几种package类别,每一种package都自己定义了在在哪一个phase上关联哪些goa