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

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 生命周期.pdf

    Maven生命周期是一组预定义的阶段,这些阶段定义了构建过程的各个步骤,并且按照一定的顺序执行,从而简化和自动化项目的构建过程。 Maven生命周期主要分为三个独立的生命周期:clean生命周期、default生命周期和...

    关于 maven生命周期 最新 最全

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

    大话Maven生命周期

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

    Maven的生命周期和插件

    Maven生命周期是一系列阶段(phases)的集合,每个阶段包含了一系列的目标(goals)。当执行一个生命周期阶段时,它会执行该阶段内所有目标,按照它们的顺序。Maven生命周期主要有三个主要的部分: - **清理(Clean)...

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

    #### Maven生命周期概述 Maven是一个项目管理和综合工具,它通过一系列预定义的任务和明确的构建生命周期来管理项目的构建、报告和文档。Maven的核心特性之一是其生命周期(Lifecycle),它定义了一系列必须按顺序...

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

    Maven生命周期和插件原理用法详解 Maven生命周期是Maven项目构建的核心机制,它定义了项目从编译到部署的整个过程。Maven生命周期可以分为三大阶段:clean周期、default周期和site周期。 1. Clean周期:负责清理...

    Maven的生命周期阶段.docx

    对于使用Eclipse的开发人员,M2Eclipse插件提供了与Maven生命周期的集成。用户可以直接在Eclipse中右键点击项目或`pom.xml`文件,选择`Run As &gt; Maven Build`,预设或自定义Maven命令。例如,自定义`mvn clean ...

    Maven使用培训PPT(巨全)

    Maven生命周期定义了项目的构建、测试、打包、部署等阶段,分为clean、default和site三个生命周期。每个生命周期包含了一系列的阶段,每个阶段包含了若干个目标(Goal)。目标是实际执行的任务,由插件实现。 ### ...

    新建maven产生的maven库

    Maven库是Java开发中不可或缺的一部分,它是一个存储各种软件组件(主要是JAR...通过创建自定义Maven库,可以更好地管理和分发内部组件,而对Maven生命周期、插件以及仓库配置的深入理解,则有助于优化整个开发过程。

    maven配置命令及项目部署

    本文将详细介绍maven的配置命令、项目部署、pom.xml文件的结构和元素、maven生命周期和插件等知识点。 maven配置命令 maven提供了一系列的配置命令,用于项目的构建、测试、打包、部署等。以下是一些常用的maven...

    Maven by Example pdf英文原版

    - **Maven生命周期**:Maven定义了一组标准的生命周期阶段,如清理(clean)、编译(compile)、测试(test)、打包(package)等。用户可以绑定特定的插件目标到生命周期的各个阶段。 - **Maven坐标**:用于定位...

    apache-maven-3.6.3安装包

    Maven生命周期包括三个主要阶段:编译(compile)、测试(test)和打包(package)。每个阶段由一系列的阶段(goals)组成,例如`clean`预清理项目,`install`将项目安装到本地仓库。 5. **插件(Plugins)** ...

    maven分模块小demo

    4. Maven生命周期与构建阶段: Maven有三个主要的生命周期:clean、default和site。clean生命周期用于清理项目,default生命周期负责编译、测试、打包、集成测试、验证和部署,site生命周期则用于生成项目文档。在...

    第四课:Maven私服构建与插件开发1

    【描述】:本课程主要讲解Maven生命周期、自定义插件开发以及如何基于Nexus构建企业级的私有Maven仓库。 【标签】:“Maven”,“生命周期”,“插件开发”,“Nexus”,“私服” 【部分内容】: 1. Maven生命...

    Maven简单使用

    ** Maven简介 ** Maven是一个Java项目管理工具,它通过一套标准的构建生命周期和依赖管理...对于初学者,可以从安装、创建项目、理解和使用POM.xml,以及熟悉Maven生命周期和插件等方面入手,逐步掌握Maven的使用。

    maven3.0.3及eclipse-maven3-plugin插件

    4. **支持Maven生命周期和构建过程**: 开发者可以在 Eclipse 中直接触发 Maven 生命周期的不同阶段,如编译、测试和打包,这极大地提高了开发效率。 5. **聚合项目的支持**: 对于包含多个子模块的 Maven 多模块...

    Maven学习笔记

    Maven插件是Maven生命周期的核心部分,通过插件可以完成编译、测试、打包等构建任务。在Web项目中,通常会使用maven-war-plugin插件来打包Web应用,生成WAR文件。 Maven的安装和配置是使用Maven进行项目管理的第一...

Global site tag (gtag.js) - Google Analytics