Maven Lifecycle and Goals

The previous section covered plugin goals and how to run goals from command line. In very few situations we invoke plugin goals directly and more often than not, lifecycle phases are preferred. In this chapter, we describe the link between Maven Lifecycle and Goals.

Lifecycle Phases and Plugin Goals

When a lifecycle phase is run, depending on project type and packaging type, Maven binds plugin goals to lifecycle phases.
When we run  mvn package in a Java Project, Maven binds plugin goals to lifecycle phases as shown in the next figure.
Maven Lifecycle and Goals - Package Goals
To process-resources phase, Maven binds resources goal of maven-resources-plugin and to test phase, it binds test goal of maven-surefire-plugin and so on.
What’s happens at package phase is bit interesting. In a Java Project, Maven binds jar goal of maven-jar-plugin. However, when we run the same command in a webapp project, up to test phase Maven binds same goals, but to the package phase Maven binds war goal of maven-war-plugin the  war:war instead of  jar:jar.
The command  mvn help:describe -Dcmd=<phase> is a very useful command not only to list the lifecycle phases but also to know the binded goal and plugin version. Run the following command from the project directory that contains the pom.xml.
$ mvn help:describe -Dcmd=clean

[INFO] ‘clean’ is a lifecycle with the following phases: 

* pre-clean: Not defined
* clean: org.apache.maven.plugins:maven-clean-plugin:2.5:clean
* post-clean: Not defined

We pass lifecycle phase  clean with argument  -Dcmd. The  help:describe validates the pom.xml and based on project type outputs the sequence of lifecycle phases that will be executed for the lifecycle and plugin goals bounded to each phase. As we can see in the screenshot, no goals are bounded to  pre-clean and  post-clean phases and they are indicated as not defined and for  clean phase,  clean:clean goal of maven-clean-plugin (version 2.5) is attached.
The following command outputs the sequence of phases and goals for default lifecycle The phase deploy belongs to default lifecycle so command output details of default lifecycle.
$ mvn help:describe -Dcmd=deploy

It is a part of the lifecycle for the POM packaging ‘jar’.
This lifecycle includes the following phases:

* validate: Not defined
* initialize: Not defined
* generate-sources: Not defined
* process-sources: Not defined
* generate-resources: Not defined
* process-resources: org.apache.maven.plugins:maven-resources-plugin:2.6:resources
* compile: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
* process-classes: Not defined
* generate-test-sources: Not defined
* process-test-sources: Not defined
* generate-test-resources: Not defined
* process-test-resources: org.apache.maven.plugins:maven-resources-plugin:2.6:testResources
* test-compile: org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile
* process-test-classes: Not defined
* test: org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
* prepare-package: Not defined
* package: org.apache.maven.plugins:maven-jar-plugin:2.4:jar
* pre-integration-test: Not defined
* integration-test: Not defined
* post-integration-test: Not defined
* verify: Not defined
* install: org.apache.maven.plugins:maven-install-plugin:2.4:install
* deploy: org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy

Lifecycles, Lifecycle Phases, Plugins and Plugin Goals are the core of Maven. and we summarize the concepts learned so far:
  • Maven comes with three lifecycles –  default, clean and site.
  • each lifecycle is made up of lifecycle phases and in all, there are 28 phases – default 21, clean 3 and site 4.
  • when a lifecycle phase is invoked using mvn command, all preceding phases are executed sequentially one after another.
  • lifecycle phases by themselves doesn’t have any capabilities to accomplish some task and they rely on plugins to carryout the task.
  • depending on project and packaging type, Maven binds various plugin goals to lifecycle phases and goals carryout the task entrusted to them.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值