码迷,mamicode.com
首页 > 其他好文 > 详细

Maven-生命周期和插件

时间:2016-04-19 00:02:25      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:

生命周期:

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

  每个生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段。

  • clean:清理项目。

  pre-clean:执行一些清理前需要完成的工作。

  clean:清理上一次构建生成的文件。

  post-clean:执行一些清理后需要完成的工作。

  • default:构建项目。

  validate:

  initialize:

  process-sources:处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。

  generate-resources:

  process-resources:

  compile:编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中。

  process-classes:

  generate-test-sources:

  process-test-sources:处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。

  test-compile:编译项目的测试代码。一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。

  process-test-classes:

  test:使用单元测试框架运行测试,测试代码不会被打包或部署。

  prepare-package:

  package:接受编译好的代码,打包成可发布的格式。

  pre-integration-test:

  integration-test:

  post-integration-test:

  install:将包安装到Maven本地仓库,供本地其他Maven项目使用。

  deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。

  • site:建立项目站点。

  pre-site:执行一些在生成项目站点之前需要完成的工作。

  site:生成项目站点文档。

  post-site:执行一些在生成项目站点之后需要完成的工作。

  site-deploy:将生成的项目站点发布到服务器上。

插件目标:

  插件的目标对应插件的功能。当多个插件目标绑定到同一个阶段的时候,这些插件声明的先后顺序决定了目标的执行顺序。

插件绑定:

生命周期 生命周期阶段 插件目标 插件任务
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-plugin:compile 编译主代码至主输出目录
 process-test-resources maven-resources-plugin:testResources  复制测试资源文件到测试输出目录 
 test-compile maven-compiler-plugin:testCompile  编译测试代码至测试输出目录 
 test maven-surefire-plugin:test  执行测试用例 
 package maven-jar-plugin:jar  创建项目jar包 
 install maven-install-plugin:install  将项目输出构件安装到本地仓库 
 deploy maven-deploy-plugin:deploy  将项目输出构件部署到远程仓库 

目标前缀:

  方便在命令行直接运行插件。

插件解析机制:

  默认groupId:org.apache.maven.plugins。

  解析插件版本:

  1. Maven在超级POM中为所有核心插件设定了版本,超级POM是所有Maven项目的父POM,所有项目都继承这个超级POM的配置。
  2. 如果用户使用某个插件时没有设定版本,而这个插件又不属于核心插件的范畴,Maven会检查所有仓库中的版本,然后做出选择。当插件没有声明版本时,使用release。

  解析插件前缀:

  插件前缀与groupId:artifactId一一对应。Maven在解析插件仓库元数据的时候,会默认使用org.apache.maven.plugins和org.codehaus.mojo两个groupId。

maven-help-plugin:

  • 作用

  获取插件详细信息。

  • 参数

  -Dplugin=:指定插件坐标。

  -Dgoal=:指定插件目标。

maven-surefire-plugin:

  • 作用

  执行单元测试。

  • 测试用例模式

  **/Test*.java

  **/*Test.java

  **/*TestCase.java

  • 参数

  -Dtest=:指定测试用例类名,可以使用*和,。

  -DfailIfNoTests=:指定即使没有任何测试也不要报错。 

  • 配置

  <includes>:

    <include>:匹配测试用例。

  <excludes>:

    <exclude>:排除测试用例。

cobertura-maven-plugin:

  • 作用

  测试覆盖率报告。

jetty-maven-plugin:

  • 作用

  部署web应用。

  • 配置

  configuration:

    scanIntervalSeconds:

    webAppConfig:

      contextPath:

cargo-maven2-plugin:

  • 作用

  自动化部署。

  •  配置

  configuration:

    container:

      containerId:

      home:

    configuration:

      type:

      home:

      properties:

        cargo.remote.username:

        cargo.remote.password:

        cargo.tomcat.manager.url:

Maven Release Plugin:

版本号定义约定:

  <主版本>.<次版本>.<增量版本>-<里程碑版本>

  • 主版本:表示项目的重大架构变更。
  • 次版本:表示较大范围的功能增加和变化,及Bug修复。
  • 增量版本:表示重大Bug的修改。
  • 里程碑版本:某一版本的里程碑。

 

  • 主干:项目开发代码的主体,从项目开始直到当前都处于活动的状态。
  • 分支:从主干的某个点分离出来的代码拷贝。
  • 标签:用来标识主干或分支的某个点的状态。

Maven GPG Plugin:

  • 作用:

  文件加密

maven-site-plugin:

  • 作用:

  项目站点构建。 

maven-javadoc-plugin:

  • 作用:

  java doc文档生成。

maven-jxr-plugin:

  • 作用:

  源码网页展示。

maven-checkstyle-plugin:

  • 作用:

  编码规范检验。

  • 规则:

  config/sun_checks.xml:Sun定义的编码规范(默认值)。

  config/maven_checks.xml:Maven社区定义的编码规范。

  config/turbine_checks.xml:Turbine定义的编码规范。

  config/avalon_checks.xml:Avalon定义的编码规范。

maven-pmd-plugin:

  • 作用:

  源码分析工具,寻找代码中的问题。

  • 规则:

  rulesets/basic.xml

  rulesets/unusedecode.xml

  rulesets/importss.xml

maven-changelog-plugin:

  • 作用:

  基于版本控制系统中就近的变更记录生成报告。

  • 变更报告:

  Change Log:基于提交的变更报告。

  Developer Activity:基于作者的变更报告。

  File Activity:基于文件的变更报告。

cobertura-maven-plugin:

  • 作用:

  测试覆盖率检测。

maven-license-plugin:

  • 作用:

  添加许可证声明。

maven-archetype-plugin:

  • 作用:

  maven项目骨架生成。

  • 编写archetype:

  pom.xml-Archetype自身的POM

  src/main/resources/archetype-resources/pom.xml-基于该Archetype生成的项目的POM原型。

  src/main/resources/META-INF/maven/archetype-metadata.xml-Archetype的描述符文件。

  src/main/resources/archetype-resources/**-其他需要包含在Archetype中的内容。

插件编写:

  • 步骤:

  创建一个maven-plugin项目。

  为插件编写目标。

  为目标提供配置点。

  编写代码实现目标行为。

  错误处理及日志。

  测试插件。

Maven-生命周期和插件

标签:

原文地址:http://www.cnblogs.com/qhdxqxx/p/5249393.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!