生命周期和插件

生命周期和插件是maven的两个核心概念,一次mvn命令的执行就对应了一次生命周期。而生命周期是一个抽象的概念,他的具体实现都需要插件来完成。

生命周期

maven有三套相互独立的生命周期:clean,default和site。

  • clean:目的是清理项目(pre-clean、clean、post-clean)
  • default: 目的是构建项目(validate、compile、test、package、verify、install、deploy)
  • site:目的是建立项目站点 (pre-site、site、post-site、site-deploy)
生命周期 阶段(phase) 内置插件: Goal 说明
clean pre-clean - 执行清理前需要完成的工作
clean clean maven-clean-plugin:clean 执行清理前需要完成的工作
clean post-clean - 执行清理后需要完成的工作
default vaildate - 验证,确保当前配置和POM内容是有效的,包含对POM文件树的验证。
default intianlize - 初始化,执行构建生命周期的主任务之前的初始化
default generate-sources - 生成源码,代码生成器生成后期阶段中处理或编译的源代码
default proccess-sources - 处理源码,提供解析、修改和转换源码。常规源码和生成的源码都可以再这里处理
default generate-resoureces - 生成资源,生成非源码资源,通常包括元数据文件和配置文件执行清理前需要完成的工作
default process-resources maven-resources-plugin:resources 处理资源,处理非源码资源,修改、转换和重定位资源都能在这阶段发生
default compile maven-compiler-plugin:compile 编译,编译源码。编译过的类被放到目标目录树中
default generate-resoureces - 处理类,处理类文件转换和增强步骤。字节码交织器和常用工具常在这一阶段操作
default generate-test-sources - 生成测试源码,生成要操作的单元测试代码
default process-test-sources - 处理测试源码,在编译前对测试源码执行任何必要的处理。修改、转换或复制源代码
default generate-test-resources - 生成测试资源,生成与测试相关的非源码资源
default process-test-resources maven-resources-plugin:testResources 处理测试资源,处理、转换或重新定位于测试相关的资源
default test-compile maven-compiler-plugin:testCompile 测试编译,编译单元测试的源码
default process-test-classes - 处理测试类,对编译生成文件做后期处理(Maven2.0.5及以上)
default test maven-surefire-plugin:test 测试,运行编译过的单元测试并累计结果
default prepare-package - 执行打包前的所有操作(Maven2.1及以上)
default package maven-jar-plugin:jar 打包,将可执行的二进制文件打包到一个分布式归档文件中,如jar或war
default pre-integration-test - 前集成测试,准备集成测试,将归档文件部署到一个服务器上执行
default integration-test - 集成测试,执行真正的集成测试,指在一个受到一定控制的模拟的真实部署环境中测试代码
default post-integration-test - 后集成测试,解除集成测试准备,涉及环境重置或重新初始化
default verify - 检验,检验可部署归档文件的有效性和完整性,通过后,将安装该归档
default install maven-install-plugin:install 安装,将项目包安装到本地仓库,供其他项目依赖
default deploy maven-deploy-plugin:deploy 部署,将项目发布到远程仓库,供其他开发人员与项目共享
site pre-site - 执行一些在生成项目站点之前需要完成的工作
site site maven-site-plugin:site 生成项目站点文档
site peo-site - 执行一些在生成项目站点之后需要完成的工作
site site-deploy maven-site-plugin:deploy 将生成的项目站点发布到服务器上

命令执行生命周期

一个mvn可以可以对应一次生命周期,但是mvn命令的不同对应了不同的生命周期。
mvn clean 仅执行clean生命周期的pre-clean和clean阶段
mvn test 仅执行default生命周期的validate、compile、test阶段
mvn clean 执行clean生命周期的pre-clean和clean阶段以及default生命周期的validate、compile、test、package阶段

插件

Maven的核心仅定义了抽象的生命周期,具体的任务是交由插件完成,插件以独立的构件形式存在。
一个插件往往具备多个功能,而每个功能对应着一个插件目标(Goal)。

生命周期的阶段和插件目标的绑定

为了减少用户的配置,maven给一些主要的生命周期阶段绑定了很多插件的目标,maven clean生命周期的clean阶段绑定了maven-clean-plugin的clean目标,当执行mvn clean时就会调用maven-clean-plugin的clean目标,这些都属于内置的绑定。
当然用户可以自己定义绑定,例如可以将maven-source-plugin的jar-no-fork目标(将项目的主代码打包成jar文件)绑定到default生命周期的verify阶段上。



  
    org.apache.maven.plugins
    maven-source-plugin
    2.1.1
    
      
        attach-sources
        verify
        
          jar-no-fork
        
      
    
  


执行插件目标

mvn 插件前缀 : 目标(例如:maven-help-plugin插件,help为插件前缀)
可以调用插件的某个目标来执行某个任务

插件

你可能感兴趣的:(生命周期和插件)