一、MAVEN生命周期(lifecycle,phase)
官网介绍:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
(1)MAVEN有三套独立的生命周期,分别是:
- Clean Lifecycle 在进行真正的构建之前进行一些清理工作
- Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
- Site Lifecycle 生成项目报告,站点,发布站点
每一套生命周期是相互独立的。
(2)clean的生命周期 共分为三个阶段
- pre-clean 执行一些需要在clean之前完成的工作
- clean 移除所有上一次构建生成的文件
- post-clean 执行一些需要在clean之后立刻完成的工作
(3)site的生命周期 共分为四个阶段
- pre-site 执行一些需要在生成站点文档之前完成的工作
- site 生成项目的站点文档
- post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
- site-deploy 将生成的站点文档部署到特定的服务器上
(4)Maven的最重要的Default生命周期,绝大部分工作都发生在这个生命周期中
- validate
- 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 接受编译好的代码,打包成可发布的格式,如 JAR 。
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install 将包安装至本地仓库,以让其它项目依赖。
- deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
(5)lifecycle:生命周期,这是maven最高级别的的控制单元,它是一系列的phase组成,也就是说,一个生命周期,就是一个大任务的总称,不管它里面分成多少个子任务,反正就是运行一个lifecycle,就是交待了一个任务,运行完后,就得到了一个结果,中间的过程,是phase完成的,自己可以定义自己的lifecycle,包含自己想要的phase
(6)phase:可以理解为任务单元,lifecycle是总任务,phase就是总任务分出来的一个个子任务,但是这些子任务是被规格化的,它可以同时被多个lifecycle所包含,一个lifecycle可以包含任意个phase,phase的执行是按顺序的,一个phase可以绑定很多个goal,至少为一个,没有goal的phase是没有意义的.
(7)goal: 这是执行任务的最小单元,它可以绑定到任意个phase中,一个phase有一个或多个goal,goal也是按顺序执行的,一个phase被执行时,绑定到phase里的goal会按绑定的时间被顺序执行,不管phase己经绑定了多少个goal,你自己定义的goal都可以继续绑到phase中
(8)mojo: lifecycle与phase与goal都是概念上的东西,mojo才是做具体事情的,可以简单理解mojo为goal的实现类,它继承于AbstractMojo,有一个execute方法,goal等的定义都是通过在mojo里定义一些注释的anotation来实现的,maven会在打包时,自动根据这些anotation生成一些xml文件,放在plugin的jar包里
二、内置变量
- ${basedir} 项目根目录
- ${project.build.directory} 构建目录,缺省为target
- ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
- ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
- ${project.packaging} 打包类型,缺省为jar
- ${project.xxx} 当前pom文件的任意节点的内容
(1)查看插件的介绍信息,显示插件的goal及介绍
mvn help:describe -Dplugin=插件名称
例:mvn help:describe -Dplugin=help
H:\develop\workspace>mvn help:describe -Dplugin=help
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.1.1:describe (default-cli) @ standalone-pom ---
[INFO] org.apache.maven.plugins:maven-help-plugin:2.1.1
Name: Maven Help Plugin
Description: The Maven Help plugin provides goals aimed at helping to make
sense out of the build environment. It includes the ability to view the
effective POM and settings files, after inheritance and active profiles have
been applied, as well as a describe a particular plugin goal to give usage
information.
Group Id: org.apache.maven.plugins
Artifact Id: maven-help-plugin
Version: 2.1.1
Goal Prefix: help
This plugin has 9 goals:
help:active-profiles
Description: Displays a list of the profiles which are currently active for
this build.
help:all-profiles
Description: Displays a list of available profiles under the current
project.
Note: it will list all profiles for a project. If a profile comes up with a
status inactive then there might be a need to set profile activation
switches/property.
help:describe
Description: Displays a list of the attributes for a Maven Plugin and/or
goals (aka Mojo - Maven plain Old Java Object).
help:effective-pom
Description: Displays the effective POM as an XML for this build, with the
active profiles factored in.
help:effective-settings
Description: Displays the calculated settings as XML for this project,
given any profile enhancement and the inheritance of the global settings
into the user-level settings.
help:evaluate
Description: Evaluates Maven expressions given by the user in an
interactive mode.
help:expressions
Description: Displays the supported Plugin expressions used by Maven.
help:help
Description: Display help information on maven-help-plugin.
Call
mvn help:help -Ddetail=true -Dgoal=<goal-name>
to display parameter details.
help:system
Description: Displays a list of the platform details like system properties
and environment variables.
For more information, run 'mvn help:describe [...] -Ddetail'
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.078s
[INFO] Finished at: Sun Jul 21 15:47:09 CST 2013
[INFO] Final Memory: 4M/7M
[INFO] ------------------------------------------------------------------------
(2)使用Help 插件输出完整的带有参数的目标列
mvn help:describe -Dplugin=插件名称 -Dfull
例:mvn help:describe -Dplugin=help -Dfull
H:\develop\workspace>mvn help:describe -Dplugin=help -Dfull
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.1.1:describe (default-cli) @ standalone-pom ---
[INFO] org.apache.maven.plugins:maven-help-plugin:2.1.1
Name: Maven Help Plugin
Description: The Maven Help plugin provides goals aimed at helping to make
sense out of the build environment. It includes the ability to view the
effective POM and settings files, after inheritance and active profiles have
been applied, as well as a describe a particular plugin goal to give usage
information.
Group Id: org.apache.maven.plugins
Artifact Id: maven-help-plugin
Version: 2.1.1
Goal Prefix: help
This plugin has 9 goals:
help:active-profiles
Description: Displays a list of the profiles which are currently active for
this build.
Implementation: org.apache.maven.plugins.help.ActiveProfilesMojo
Language: java
Available parameters:
output
Expression: ${output}
Optional parameter to write the output of this help in a given file,
instead of writing to the console.
Note: Could be a relative path.
help:all-profiles
Description: Displays a list of available profiles under the current
project.
Note: it will list all profiles for a project. If a profile comes up with a
status inactive then there might be a need to set profile activation
switches/property.
Implementation: org.apache.maven.plugins.help.AllProfilesMojo
Language: java
Available parameters:
output
Expression: ${output}
Optional parameter to write the output of this help in a given file,
instead of writing to the console.
Note: Could be a relative path.
help:describe
Description: Displays a list of the attributes for a Maven Plugin and/or
goals (aka Mojo - Maven plain Old Java Object).
Implementation: org.apache.maven.plugins.help.DescribeMojo
Language: java
Available parameters:
artifactId
Expression: ${artifactId}
The Maven Plugin artifactId to describe.
Note: Should be used with groupId parameter.
cmd
Expression: ${cmd}
A Maven command like a single goal or a single phase following the Maven
command line:
mvn [options] [<goal(s)>] [<phase(s)>]
detail (Default: false)
Expression: ${detail}
This flag specifies that a detailed (verbose) list of goal (Mojo)
information should be given.
goal
Expression: ${goal}
The goal name of a Mojo to describe within the specified Maven Plugin. If
this parameter is specified, only the corresponding goal (Mojo) will be
described, rather than the whole Plugin.
groupId
Expression: ${groupId}
The Maven Plugin groupId to describe.
Note: Should be used with artifactId parameter.
medium (Default: true)
Expression: ${medium}
This flag specifies that a medium list of goal (Mojo) information should
be given.
minimal (Default: false)
Expression: ${minimal}
This flag specifies that a minimal list of goal (Mojo) information should
be given.
output
Expression: ${output}
Optional parameter to write the output of this help in a given file,
instead of writing to the console.
Note: Could be a relative path.
plugin
Expression: ${plugin}
The Maven Plugin to describe. This must be specified in one of three
ways:
1. plugin-prefix, i.e. 'help'
2. groupId:artifactId, i.e. 'org.apache.maven.plugins:maven-help-plugin'
3. groupId:artifactId:version, i.e.
'org.apache.maven.plugins:maven-help-plugin:2.0'
version
Expression: ${version}
The Maven Plugin version to describe.
Note: Should be used with groupId/artifactId parameters.
help:effective-pom
Description: Displays the effective POM as an XML for this build, with the
active profiles factored in.
Implementation: org.apache.maven.plugins.help.EffectivePomMojo
Language: java
Available parameters:
output
Expression: ${output}
Optional parameter to write the output of this help in a given file,
instead of writing to the console.
Note: Could be a relative path.
help:effective-settings
Description: Displays the calculated settings as XML for this project,
given any profile enhancement and the inheritance of the global settings
into the user-level settings.
Implementation: org.apache.maven.plugins.help.EffectiveSettingsMojo
Language: java
Available parameters:
output
Expression: ${output}
Optional parameter to write the output of this help in a given file,
instead of writing to the console.
Note: Could be a relative path.
showPasswords (Default: false)
Expression: ${showPasswords}
For security reasons, all passwords are hidden by default. Set this to
true to show all passwords.
help:evaluate
Description: Evaluates Maven expressions given by the user in an
interactive mode.
Implementation: org.apache.maven.plugins.help.EvaluateMojo
Language: java
Available parameters:
artifact
Expression: ${artifact}
An artifact for evaluating Maven expressions.
Note: Should respect the Maven format, i.e.
groupId:artifactId[:version][:classifier].
expression
Expression: ${expression}
An expression to evaluate instead of prompting. Note that this must not
include the surrounding ${...}.
help:expressions
Description: Displays the supported Plugin expressions used by Maven.
Implementation: org.apache.maven.plugins.help.ExpressionsMojo
Language: java
Available parameters:
output
Expression: ${output}
Optional parameter to write the output of this help in a given file,
instead of writing to the console.
Note: Could be a relative path.
help:help
Description: Display help information on maven-help-plugin.
Call
mvn help:help -Ddetail=true -Dgoal=<goal-name>
to display parameter details.
Implementation: org.apache.maven.plugins.help.HelpMojo
Language: java
Available parameters:
detail (Default: false)
Expression: ${detail}
If true, display all settable properties for each goal.
goal
Expression: ${goal}
The name of the goal for which to show help. If unspecified, all goals
will be displayed.
indentSize (Default: 2)
Expression: ${indentSize}
The number of spaces per indentation level, should be positive.
lineLength (Default: 80)
Expression: ${lineLength}
The maximum length of a display line, should be positive.
help:system
Description: Displays a list of the platform details like system properties
and environment variables.
Implementation: org.apache.maven.plugins.help.SystemMojo
Language: java
Available parameters:
output
Expression: ${output}
Optional parameter to write the output of this help in a given file,
instead of writing to the console.
Note: Could be a relative path.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.235s
[INFO] Finished at: Sun Jul 21 15:50:08 CST 2013
[INFO] Final Memory: 4M/7M
[INFO] ------------------------------------------------------------------------
(3)获取单个目标的信息,设置 mojo 参数和 plugin 参数
mvn help:describe -Dplugin=插件名称 -Dmojo=goal目标 -Dfull
mvn help:describe -Dplugin=help -Dmojo=describe -Dfull
H:\develop\workspace>mvn help:describe -Dplugin=help -Dmojo=describe -Dfull
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.1.1:describe (default-cli) @ standalone-pom ---
[INFO] Mojo: 'help:describe'
help:describe
Description: Displays a list of the attributes for a Maven Plugin and/or
goals (aka Mojo - Maven plain Old Java Object).
Implementation: org.apache.maven.plugins.help.DescribeMojo
Language: java
Available parameters:
artifactId
Expression: ${artifactId}
The Maven Plugin artifactId to describe.
Note: Should be used with groupId parameter.
cmd
Expression: ${cmd}
A Maven command like a single goal or a single phase following the Maven
command line:
mvn [options] [<goal(s)>] [<phase(s)>]
detail (Default: false)
Expression: ${detail}
This flag specifies that a detailed (verbose) list of goal (Mojo)
information should be given.
goal
Expression: ${goal}
The goal name of a Mojo to describe within the specified Maven Plugin. If
this parameter is specified, only the corresponding goal (Mojo) will be
described, rather than the whole Plugin.
groupId
Expression: ${groupId}
The Maven Plugin groupId to describe.
Note: Should be used with artifactId parameter.
medium (Default: true)
Expression: ${medium}
This flag specifies that a medium list of goal (Mojo) information should
be given.
minimal (Default: false)
Expression: ${minimal}
This flag specifies that a minimal list of goal (Mojo) information should
be given.
output
Expression: ${output}
Optional parameter to write the output of this help in a given file,
instead of writing to the console.
Note: Could be a relative path.
plugin
Expression: ${plugin}
The Maven Plugin to describe. This must be specified in one of three
ways:
1. plugin-prefix, i.e. 'help'
2. groupId:artifactId, i.e. 'org.apache.maven.plugins:maven-help-plugin'
3. groupId:artifactId:version, i.e.
'org.apache.maven.plugins:maven-help-plugin:2.0'
version
Expression: ${version}
The Maven Plugin version to describe.
Note: Should be used with groupId/artifactId parameters.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.094s
[INFO] Finished at: Sun Jul 21 15:52:43 CST 2013
[INFO] Final Memory: 4M/7M
[INFO] ------------------------------------------------------------------------
(4)mvn dependency:tree 打印整个依赖树
(5)发布第三方jar到本地仓库
mvn install:install-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar
(6)当pom文件名不是pom.xml时,通过参数指定pom文件的路径
mvn -f pom路径
例:mvn -f d:/pom_test.xml