Maven的生命周期,阶段,插件,目标的关系

生命周期(Lifecycle)

Maven的生命周期分为互相独立的三部分,分别是clean,default,site。 而每一个周期又包括若干阶段

1. clean:用于清理项目,分为3个阶段
2. default:用于构建项目,分为23个阶段
3. site:用于建立项目站点,分为4个阶段

阶段(Phase)

周期所包含的阶段是有前后顺序的,并且后面的阶段依赖于前面的阶段。

阶段的使用

在执行maven命令时,mvn命令之后使用的参数便是maven的各个阶段

例如:

mvn compile

此命令使用了deault周期的compile阶段。

例如:

mvn clean deploy

此命令使用了clean周期的clean阶段和default周期的deploy阶段。

阶段的顺序

在调用maven的阶段时,会顺序执行本周期当前阶段之前的所有阶段,直至当前阶段。

例如:clean周期共有3个阶段,按顺序分别如下:

1. pre-clean
2. clean
3. post-clean

当执行命令

mvn clean

执行了clean同期的pre-clean和clean,共2个阶段。

当执行命令

mvn compile

compile阶段属于default周期,而default周期有23个阶段,compile排序第7位,所以实际执行了default周期的第1阶段validate至第7阶段compile,共7个阶段。包括:

1. validate
2. initialize
3. generate-sources
4. process-sources
5. generate-resources
6. process-resources
7. compile

那么各个阶段到底是如何执行的呢?Maven内部是通过插件中的目标来实现。

插件(plugin)和目标(goal)

Maven的操作是基于不同的插件的不同目标来实现的

一个插件中包括若干目标,而每个目标会执行一个特定的任务task。

例如:

mvn clean

在上面这个命令中,使用的参数是clean阶段,而实际执行的是maven-clean-plugin插件的clean目标。

因为clean周期的clean阶段是默认绑定到clean插件的clean目标绑定的。(不同的clean)

可在maven-core-*.jar包的META-INF/plexus/components.xml中找到此绑定关系。

<component>
    <role>org.apache.maven.lifecycle.Lifecycle</role>
    <implementation>org.apache.maven.lifecycle.Lifecycle</implementation>
    <role-hint>clean</role-hint>
    <configuration>
        <id>clean</id>
        <phases>
            <phase>pre-clean</phase>
            <phase>clean</phase>
            <phase>post-clean</phase>
        </phases>
        <default-phases>
            <clean>
            org.apache.maven.plugins:maven-clean-plugin:2.5:clean
            </clean>
        </default-phases>
    </configuration>
</component>

其它详细的绑定关系可查看META-INF/plexus目录下的xml文件。

常用的插件

1. maven-clean-plugin
2. maven-resouces-plugin
3. maven-compiler-plugin
4. maven-deploy-plugin
5. maven-surefire-plugin
6. maven-install-plugin

查看更多插件

直接运行插件

可使用“插件名:目标名”的参数形式直接运行某插件的某目标。

例如:

mvn dependency:copy-dependencies

以上命令执行了dependency插件的copy-dependencies目标。

阶段(phase)和插件目标(goal)可以同时使用

例如:

mvn clean dependency:copy-dependencies package

以上命令执行了clean周期的pre-clean和clean阶段,dependency插件的copy-dependencies目标,default周期package阶段及package之前的所有阶段。

生命周期与阶段的关系表及部分阶段默认绑定的插件目标

顺序生命周期阶段插件:目标
1cleanpre-clean
2cleanclean:clean
3post-clean
—分隔线——分隔线——分隔线—
1defaultvalidate
2initialize
3generate-sources
4process-sources
5generate-resources
6process-resourcesresources:resources
7compilecompiler:compile
8process-classes
9generate-test-sources
10process-test-sources
11generate-test-resources
12process-test-resourcesresources:testResources
13test-compilecompiler:testCompile
14process-test-classes
15testsurefire:test
16prepare-package
17package
18pre-integration-test
19integration-test
20post-integration-test
21verify
22installinstall:install
23deploydeploy:deploy
—分隔线——分隔线——分隔线—
1sitepre-site
2sitesite:site
3post-site
4site-deploysite:deploy

原文看这里

转载于:https://my.oschina.net/u/2610965/blog/1142929

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值