• [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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    dynamic 转换实体类
    泛型的简单使用
    winfrom嵌入word
    echart睡眠后台代码,
    echart实现睡眠前台代码
    Mysql时间加一天
    一道关于面向对象面试题所引发的血案(阿里)
    一道面试题让你彻底掌握JS中的EventLoop(头条)
    对象(数组)的深克隆和浅克隆(头条)
    BAT笔试题中几道关于堆栈内存和闭包作用域的题
  • 原文地址:https://www.cnblogs.com/zhaoyanghoo/p/5721124.html
Copyright © 2020-2023  润新知