1. 理解Maven
可以这样理解,Maven根据Goal来做事。Goal可以近似理解为Ant的目标。但是,对于一个大型项目而言,一个build脚本可能需要定义太多的 Goal。所以,Maven还有一个Phase的概念。一个Phase可以认为包含了多个Goal。Maven每做一件事情,其实都是根据Goal定义的 动作去执行。
2. Phase与Goal
Maven有三种LifeCycle:default、clean和site。default用于处理项目的部署,clean用于清理项目,site用于 完成项目的站点文档。一套LifeCycle定义了有序的若干Phase。可以认为,Maven的每次执行,并不会执行所有的Phase和Goal。当 Maven开始执行时,会根据配置文件POM或者引用的Plug-in定义,来决定以下两件事情:
- 需要执行哪些Phase
- 每个Phase需要执行哪些Goal
- 这需要考虑Packaging的方式,即<package>元素的定义。可以参考 http://maven.apache.org/guides/introduction/introduction-to-the- lifecycle.html#Packaging。每种Packaing的方式都预定义了一组必须执行的Phase,以及这些Phase中含有的 Goal。
- 另外,还需要考虑引用的Plug-in,在<execution>中定义了Default LifeCycle中哪些Phase。这些被定义的Phase也会被执行。在<execution>中,每个Phase都会与至少一个Goal相关联。
配置Maven的Plug-in无非就是制定其运行的Phase或者Goal。这两者可以通过两种方式定义:pom.xml及Plug-in程序内部。在 Pom.xml文件中,引用plug-in时,就可以通过<execution>制定其Phase及Goal;而在Plug-in程序内部, 可以通过@Goal及@Phase等Annotation进行定义。
4. Maven命令举例说明
1) mvn install