`
chyou1988
  • 浏览: 6779 次
社区版块
存档分类
最新评论

maven生命周期

 
阅读更多

Maven 的生命周期

Maven 的生命周期

Maven 的生命周期其实是指它对所有的构建过程进行了反复的推敲、反思,之后总结了一套高度抽象过程。这个过程基本上包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、、站点生成等步骤,这个概念性的东西意味着它并不做任何实质性的事情,也就是说:它就像接口,只定义规范,具体的
实现细节则交给了Maven 的各个丰富的插件。
Maven 有三套相互独立的生命周期,分别是:clean、default、site。

clean 主要是清理项目

default 是Maven 最核心的的构建项目

site 是生成项目站点。

每一个大的生命周期又分为很多个阶段。后面的阶段依赖于前面的阶段

Maven 生命周期阶段

3 大生命周期蕴含着小小的阶段,我们按顺序看一下
clean 周期:
pre-clean:准备清理
clean:真正的清理工作
post-clean:执行清理后的一些后续工作
default 周期:
validate:验证
initialize:初始化配置
generate-sources:生成源代码编译目录
process-sources:处理项目主资源文件,复制资源文件到outputclasspath
generate-resources:生成资源目录
process-resources:处理资源文件
complie:编译源代码
process-classes:处理编译后文件
generate-test-sources:生成测试目录
process-test-sources:处理项目测试资源文件,复制测试资源文件到outputclasspath
generate-test-resources:生成测试资源文件
process-test-resources:处理测试资源文件
test-compile:编译测试代码
process-test-classes:处理测试代码
test:单元测试运行测试代码
prepare-package:打包前的准备
package:将编译好的代码打包成为jar 或者war 或者ear 等等
pre-integration-test:准备整体测试
integration-test:整体测试
post-integration-test:为整体测试收尾
verify:验证
install:安装到本地Maven 库
deploy:将最终包部署到远程Maven 仓库
site 周期:
pre-site:准备生成站点
site:生成站点及文档
post-site:站点收尾
site-deploy:将生成的站点发布到服务器上


比如说在命令行执行了
mvn clean
就是执行到clean 周期的clean 阶段。也就是说实际执行了pre-clean 阶段与clean 阶段。
mvn deploy
就是执行了整个default 生命周期
mvn clean deploy site-deploy
这个就是执行了clean 周期的前两个阶段、default 周期的所有阶段、site 周期的所有阶段。

Maven 的插件机制

Maven 的生命周期仅仅是个抽象的标准,不干实事的,真正干事就是Maven 插件。插件本身为了能够代码复用,往往一个插件实现了很多功能,在Maven 中,管这个叫做“目标”。

比如maven-dependency-plugin 基于项目依赖实现了很多事情,分析依赖、列出依赖树、分析
依赖来源等等。每个功能对应着一个插件的目标,插件的目标越多,插件的功能越多。
比如
mvn dependency:analyze
就是使用maven-dependency-plugin 插件的analyze 目标,分析项目的依赖。
[WARNING] Unused declared dependencies found:
[WARNING] org.springframework:spring-core:jar:2.5.6:compile
[WARNING] org.springframework:spring-beans:jar:2.5.6:compile
Maven 的生命周期与Maven 插件是项目绑定的,Maven 默认地将一些默认插件的目标与Maven 的生命周期维系在了一起, 比如default 的compile 这个阶段就是和maven-compiler-plugin 这个插件的compile 目标维系着不可分割的关系。为了不让用户不用任何配置就能进行一般程度的项目构建,Maven 默认给自己生命周期的核心阶段绑定了自己的插件。
clean 如下:
生命周期阶段 插件目标
pre-clean
clean maven-clean-plugin:clean
post-clean
site 如下:
生命周期阶段 插件目标
pre-site
site maven-site-plugin:site
post-site
site-deploy maven-site-plugin:deploy
最麻烦的就是最核心的default
生命周期阶段 插件目标
process-resources maven-resources-plugin:resources
compile maven-compiler-pugin:compile
process-test-resources maven-resources-plugin:testResources
test-compile maven-compiler-plugin:testCompile
test maven-surefire-plugin:testCompile
package maven-jar-plugin:jar
install maven-install-plugin:install
deploy maven-deploy-plugin:deploy

在我们自己的项目中绑定插件,比如在pom.xml 内容添加如下内容

<build>
<resources>
<resource>
<directory>src/main/resource</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>buildSource</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
<inherited>false</inherited>
<configuration>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>


mvn verify
看到输出文件夹就包含了我们的源代码source 的jar。这个打包源代码的“目标”被绑定到了default 周期的verify 执行。还有一点就是有些插件一旦写上了pom.xml 会有默认的绑定周期,比如就拿以上插件说事,如果将<phase>verify</phase>去掉,执行mvn package源代码依然输出,其实它默认适合default 周期的package 阶段绑定的。

Goals 代表该插件的某些目标(功能)。
插件还能进行全局性质的参数配置,Configuration 就是配置参数的。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<target>1.5</target>
</configuration>
</plugin>

 

Maven 插件的详细信息

如果想获取插件的详细信息,一种途径就是通过在线官网查询(google 一下就知道了),
一种就是利用它的另一个插件,maven-help-plugin。比如在命令行输入如下
mvn help:describe -D plugin=org.apache.maven.plugins:maven-compiler-plugin:2.1
效果如下,显示了一些插件的信息
Name: Maven Compiler Plugin
Description: The Compiler Plugin is used to compile the sources of your
project.
Group Id: org.apache.maven.plugins
Artifact Id: maven-compiler-plugin
Version: 2.1
Goal Prefix: compiler
This plugin has 3 goals:
compiler:compile
Description: Compiles application sources
compiler:help
Description: Display help information on maven-compiler-plugin.
Call
mvn compiler:help -Ddetail=true -Dgoal=<goal-name>
to display parameter details.
compiler:testCompile
Description: Compiles application test sources.
For more information, run 'mvn help:describe [...] -Ddetail'
需要注意的就是Goal Prefix: compiler 这里,是代表该插件的目标前缀写法,我称之为目标简写,也就是说你可以简写为mvn compiler:compile
就可以使用maven的maven-compiler-plugin插件完成编译项目的功能了。其实使用 “插件:目标”的方式是适合该功能不方便与Maven 生命周期绑定的情况下。

分享到:
评论

相关推荐

    关于 maven生命周期 最新 最全

    Maven生命周期 最新版 最全 最好用

    Maven 生命周期.pdf

    附件详细的阐述了Maven中生命周期概念的理解,对于在开发过程中熟练的使用Maven大有脾益

    大话Maven生命周期

    Maven非常强大的重要原因是它有十分完善的生命周期模型 lifecycle 这个生命周期可以从两方面来理解 第一 顾名思义 运行Maven的每个步骤都由它来定义的 这种预定义的默认行为使得我们使用Maven变得简单 相比而言 Ant...

    Maven生命周期和及插件原理用法详解

    主要介绍了Maven生命周期和及插件原理用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值的相关资料

    Eclipse整合Maven开发教程

    4.2 Maven生命周期 13 4.3 Run As 15 4.4 Maven Build(compile) 16 4.5 Maven Build(package) 16 4.6 Maven Install(安装) 17 4.7 Maven Clean 18 4.8 新建Web工程 18 4.9 运行Web工程 19 5. 依赖...

    Maven3实战笔记04Maven的生命周期和插件

    Maven3实战笔记04——Maven的生命周期和插件。

    Maven的生命周期阶段.docx

    Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。 Maven的生命周期是抽象的,即生命周期不做任何实际的...

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven生命周期 (Lifecycle) 3.5.3. Maven坐标 (Coordinates) 3.5.4. Maven仓库(Repositories) 3.5.5. Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. ...

    Maven权威指南中文版(完整)

    3.5.2. Maven生命周期 (Lifecycle) .......................... 26 3.5.3. Maven坐标 (Coordinates) ............................ 32 3.5.4. Maven仓库(Repositories) ............................ 34 3.5.5. ...

    maven的使用

    想了解maven了,相关maven常用命令、maven生命周期、maven加速

    Maven的生命周期和插件

    NULL 博文链接:https://576017120.iteye.com/blog/1468915

    版本管理及项目构建和maven的介绍使用

    1.svn版本管理。 2.项目构建的方式,主要介绍Ant和maven,...包含Ant的简介及常用任务,maven的简介、环境配置、maven项目开发,maven依赖、maven仓库等概念以及maven生命周期和maven插件、聚合和继承等。 3.推荐的书籍

    chm版本Maven教程

    Maven 构建生命周期 Maven 构建配置文件 Maven存储库 Maven插件 Maven创建Java项目 使用Maven构建和测试Java项目 Maven外部依赖 Maven项目文档 Maven项目模板 Maven快照 Maven构建自动化 Maven依赖管理 Maven自动化...

    Maven 构建生命周期

    Maven 构建生命周期 Maven 构建生命周期定义了一个项目构建跟发布的过程。 一个典型的 Maven 构建(build)生命周期是由以下几个阶段的序列组成的: 阶段 处理 描述 验证 validate 验证项目 验证项目是否...

    Maven构建生命周期详细介绍

    主要介绍了Maven构建生命周期详细介绍,小编觉得还是挺不错的,这里分享给大家,需要的朋友可以参考下。

    wiremock-maven-plugin:WireMock Maven插件

    WireMock Maven插件 在Maven生命周期中运行WireMock。5.0.0及更高版本中的新功能5.0.0之前的WireMock Maven插件的每个版本都与WireMock本身的特定版本捆绑在一起。 这导致WireMock Maven插件必须在每次发布WireMock...

    maven3.2.5安装包下载

    Maven包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System)。 安装步骤 先下载,下载完成后,解压到某个目录  ...

Global site tag (gtag.js) - Google Analytics