zoukankan      html  css  js  c++  java
  • [maven] 生命周期和插件

    maven生命周期和插件

    生命周期

    maven的生命周期有三套,互相独立。每个生命周期含有不同阶段,常用如下

    • clean 清理项目
      • pre-clean 执行清理前需要完成的工作
      • clean 清理上一次构建生成的文件
      • post-clean 执行清理后需要完成的工作
    • default 构建项目
      • validate 验证项目正确,所有必需的信息都有
      • initialize 初始化编译状态,例如创建target文件夹
      • generate-source
      • process-source 主资源文件变量替换,复制至主classpath目录
      • generate-resources
      • process-resources
      • compile 编译主源码至主classpath目录
      • process-classes
      • generator-test-sources
      • process-test-sources 测试资源文件变量替换,复制至测试classpath目录
      • generate-test-resources
      • process-test-resources
      • test-compile 编译测试源码至测试classpath目录
      • process-test-classes
      • test 执行测试case,测试代码不会被打包
      • prepare-package
      • package 将编译好的代码打包成可发布的格式
      • pre-integration-test
      • integration-test
      • post-integration-test
      • verify 核实包是有效合规,达到质量标准
      • install 将包安装到maven本地仓库
      • deploy 将包复制到远程仓库
    • site 构件站点
      • pre-site
      • site 生成项目站点文档
      • post-site
      • site-deploy 将生成的项目站点发布到服务器上

    maven命令可以调用maven的生命周期阶段完成构建,不同生命周期无依赖,同一生命周期的阶段前后是有依赖的。

    example:
    	mvn clean install site
    

    插件

    插件目标是插件对应的某一种功能,可以和maven生命周期的阶段绑定。

    默认绑定

    生命周期阶段 插件目标
    process-resources maven-resource-plugin:resources
    compile maven-compiler-plugin:compile
    process-test-resource maven-resource-plugin:testResources
    test-compile maven-compiler-plugin:testCompile
    test maven-surefire-plugin:test
    package maven-jar-plugin:jar
    install maven-install-plugin:install
    deploy maven-deploy-plugin:deploy

    自定义绑定

    		<plugin>
               	<groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>attach source</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    

    上面的代码创建了一个自定义的绑定,在verify阶段绑定了maven-source-plugin:jar-no-fork插件目标。作用是在verify阶段生成项目源码包,调用命令为maven verify

    插件配置

    • 命令行配置
      使用-D参数配置,例如

        mvn package -Dmaven.test.skip=true
      
    • pom文件配置
      使用<plugin>标签内的<configration>配置,例如

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
      

      上面的代码配置了compile插件编译1.8版本的源文件

    描述插件

    插件解析机制

    maven命令也可以调用maven的插件目标来完成构建。
    分析命令

    mvn dependency:tree
    

    插件的定位也需要三要素:groupid,artifactid,version。在上述命令中dependency称为插件前缀,tree称为插件目标。根据插件前缀定位插件坐标。

    1. 获取插件meta.xml信息。插件仓库的默认地址是http://repo1.maven.org/maven2/org/apache/maven/plugins。获取该目录下的maven-metadata.xml。

    2. 查找前缀对应的artifactid为maven-dependency-plugin,因为查得到所以确认groupid为org.apache.maven.plugins,如果查不到则会去配置的其它仓库重复步骤1,所有配置的仓库均找不到则报错。

       <plugin>
       	<name>Apache Maven Dependency Plugin</name>
       	<prefix>dependency</prefix>
       	<artifactId>maven-dependency-plugin</artifactId>
       </plugin>
      
    3. 确定好插件的groupid和artifactid,根据这两个信息查找插件的metadata.xml,地址为http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/maven-metadata.xml,版本信息即可确定,maven 3默认使用release版本,所以version为2.10

    4. 所以实际执行的命令为

       mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree
      

    参考文档

    Introduction to the Build Lifecycle

    作者: zhaoyanghoo
    出处: http://www.cnblogs.com/zhaoyanghoo/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    2级联动下拉列表写法
    select选中获取索引三种写法
    判断设备-安卓|苹果|微信
    限制输入字符个数的jq插件
    面试题:1.清空字符串前后的空格;2.找出出现最多的字符
    css3玩转各种效果【资源】
    利用jquery.touchSwipe.js实现的移动滑屏效果。
    【leetcode刷题笔记】Letter Combinations of a Phone Number
    【leetcode刷题笔记】Linked List Cycle
    【leetcode刷题笔记】Length of Last Word
  • 原文地址:https://www.cnblogs.com/zhaoyanghoo/p/5721124.html
Copyright © 2011-2022 走看看