Maven使用指南(二)生命周期与插件

一、生命周期 & 阶段

       生命周期是对所有构建过程的抽象和统一,总共抽象为三套不同的生命周期(clean、default、site),每个生命周期都包含不同的阶段。阶段之间是有顺序的,会顺序执行当前阶段及之前所有阶段。

  • clean:清理项目
    • pre-clean阶段
    • clean阶段
    • post-clean阶段
  • default:构建项目,最核心的部分
    • 编译项目主代码:包括复制resource和编译class
    • 编译项目test代码:包括复制test resource和编译test class
    • 打包
    • 部署到远程仓库
  • site:建立和发布项目站点
    • pre-site:生成项目站点之前需要完成的工作
    • site:生成项目站点文档
    • post-site:生成项目站点之后需要完成的工作
    • site-deploy:将生成的项目站点发布到服务器

二、插件 & 目标

       Maven的核心仅仅定义了抽象的生命周期,具体的任务交由插件完成。Maven核心为部分生命周期阶段绑定了默认插件目标,因此无需手动绑定,就可以通过 mvn clean(mvn 阶段名称)的方式调用绑定插件目标,完成实际行为

  • 生命周期是抽象的,其实际行为由插件完成
  • 每个插件包括多个功能,每个功能就是一个插件目标
  • 每个生命周期阶段可以绑定一个或多个插件目标

  1)内置绑定

       超级POM中为一些主要的生命周期阶段绑定了默认插件目标

  • clean生命周期
    生命周期阶段插件目标执行任务
    pre-clean 
    cleanmaven-clean-plugin:clean删除项目的输出目录
    post-clean 
  • default生命周期
    生命周期阶段插件目标执行任务
    process-resourcesmaven-resources-plugin:resources复制主资源文件至主输出目录
    compilemaven-compiler-plugin:compile编译主代码至主输出目录
    process-test-resourcesmaven-resources-plugin:testResources复制测试资源文件至测试输出目录
    test-compilemaven-compiler-plugin:testCompile编译测试代码至测试输出目录
    testmaven-surefire-plugin:test执行测试用例
    packagemaven-jar-plugin:jar创建项目jar包
    installmaven-install-plugin:install将项目输出构件安装到本地仓库
    deploymaven-deploy-plugin:deploy将项目输出构件部署到远程仓库
  • site生命周周期
    生命周期阶段插件目标执行任务
    pre-site 
    sitemaven-site-plugin:site生成项目站点
    post-site 
    site-deploymaven-site-plugin:deploy将项目站点部署至远程服务器
       

  2)自定义绑定

       用户可以选择将某个插件目标绑定到生命周期的某个阶段

  1. 在verify阶段(集成测试(post-integration-test)阶段之后,安装构件(install)阶段之前)创建源码jar包
    <build>
    	<plugins>
    		<!-- 在verify阶段使用jar-no-fork插件目标将主代码打包成jar文件 -->
    		<plugin>
    			<!-- 插件的坐标 -->
    			<groupId>org.apache.maven.plugins</groupId>
    			<artifactId>maven-source-plugins</artifactId>
    			<version>2.1.1</version>
    			<executions>
    				<execution>
    					<id>attach-sources</id>
    					<!-- 生命周期阶段 -->
    					<phase>verify</phase>
    					<!-- 一个阶段可以绑定多个目标 -->
    					<goals>
    						<!-- 插件目标名称 -->
    						<goal>jar-no-fork</goal>
    					</goals>
    				</execution>
    			</executions>
    		</plugin>
    	</plugins>
    </build>
  2. 部分插件目标在编写已经定义了默认绑定阶段,因此可以不配置<executions>元素

  3)查看插件信息

       使用help插件的describe目标查看插件信息,-D指定参数值 

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1 -Ddetail
## 等同于
mvn org.apache.maven.plugins:maven-help-plugin:2.2:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1 -Ddetail

  4)插件前缀

       可以将插件前缀作为访问插件的唯一标识,因此在第3点中可以直接使用前缀help代替maven-help-plugin插件

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值