Maven系列学习Maven生命周期和插件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven系列学习Maven生命周期和插件相关的知识,希望对你有一定的参考价值。
Maven生命周期和插件
Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作
1.生命周期
Maven的生命周期就是为了对所有的构建过程进行抽象和统一,这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤,Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,在Maven的设计中,实际的任务都是交给插件来完成的
一次构建(build):initialize--compile--test--package--integrationTest--deploy;
2.三套生命周期
Maven拥有三套互相独立的生命周期,分别是clean,default和site.clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点,每个生命周期包含一些阶段(phase),而且是有顺序的,并且后面的阶段依赖前面的阶段,而生命周期本身是独立的
clean的生命周期的目的是清理项目,包含三个阶段:pre-clean(清理前需要完成的工作),clean(清理上次构建的文件),post-clean(清理后需要完成的工作)
default的生命周期定义真正构建时需要执行的所有步骤,它是所有生命周期中最核心的部分,其包含的阶段如下:
validate--initialize--generate-source--process-source--generate-resources--process-resource--compile--process-classes--generate-test-sources--generate-test-resources--process-test-resource--test-compile--process-test-classes--test--prepare-package--package--pre-integraion-test-integration-test--post-integration-test--verify--install--deploy
site生命周期的目的是建立和发布项目站点,Maven能给予POM所包含的信息,自动生成一个友好的站点,该生命周期包含以下阶段:
pre-site--site--post-site--site-deploy
3.命令行与生命周期
从命令行执行Maven任务的最主要方式就是调用Maven的生命周期阶段:
(1). mvn clean:调用clean的生命周期
(2). mvn test:调用default生命阶段的test阶段,实际执行的阶段为default生命周期的从validate---到test的所有阶段
(3). mvn clean install:该命令是调用clean生命周期和defualt生命周期的install阶段,实际是pre-clean,clean,post-clean,和default生命周期的从validate到install的所有阶段
(4). mvn clean deploy site-deploy:该命令我就不做过多解释了
4.POM中插件全局配置
并不是所有的插件参数都合适从命令行配置,有些参数的值从项目创建到项目发布都不会改变,或者说很少改变,对于这种情况,在POM文件中一次性配置就显然比重复在命令行输入要方便
用户可以在声明插件的时候,对此插件进行一个全局的配置,也就是说所有说,所有该基于该插件目标的任务,都会使用这些配置
<build> <plugins> <!-- 插件定义 --> <plugin> <groupId>org.apache.maven.plugins<groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.1</version> <configuration> <!-- 编译1.8版本的源文件 --> <source></source> <!-- 生成与JVM 1.8 兼容的字节码文件 --> <target></target> </configuration> </plugin> </plugins> </build>
5.插件绑定
Maven的生命周期与插件互相绑定,用以完成实际的构建任务,具体而言,是生命周期阶段与插件的目标互相绑定,以完成某个具体的构建任务,比如项目编译这一任务,它对应了default生命周期的compile这一阶段,而maven-compile-plugin这一插件的compile目标能够完成该任务,因此,将它们绑定,就能实现项目编译的目的
以上是关于Maven系列学习Maven生命周期和插件的主要内容,如果未能解决你的问题,请参考以下文章