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

来源:互联网 发布:软件如何代理加盟 编辑:程序博客网 时间:2024/04/27 20:22

生命周期(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-clean2. clean3. post-clean

当执行命令

mvn clean

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

当执行命令

mvn compile

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

1. validate2. initialize3. generate-sources4. process-sources5. generate-resources6. process-resources7. 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-plugin2. maven-resouces-plugin3. maven-compiler-plugin4. maven-deploy-plugin5. maven-surefire-plugin6. 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之前的所有阶段。

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

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

原文看这里