• maven中 install的install:install的区别


    如果一个项目,你想安装jar包到本地仓库,可能会报The packaging for this project did not assign a file to the build artifact

    从这个错误可以延伸出maven 生命周期,插件目标绑定和插件前缀的知识

    一.maven生命周期

    maven分为clean,default和site3套生命周期,互不影响.

    每个生命周期分为不同阶段,后面的阶段依赖于前面的阶段

    比如default生命周期的主要阶段:validate,compile ,test,package,verify,install,deploy (并不是全部)

    调用install生命周期会执行validate,compile ,test,package,verify,再执行install,

    但不会执行clean生命周期的,因为3套生命周期相互独立.

    标题的install是调用install生命周期的.

    二.插件前缀

    我觉得插件前缀不如插件简写比较合适.每个插件可以定义一个简写,不用打那么长的限定名.

    org.apache.maven.plugins:maven-install-plugin前缀为install,version由maven根据本地仓库和远程仓库找一个最稳定的,具体就不深入了.

    否则标题的install:install可能要改成org.apache.maven.plugins:maven-install-plugin:install

    如果你自己写个插件,前缀为install,还有个install目标,然后还在项目中依赖了,我觉得应该会有冲突的错误.

    所以标题的maven install:install是执行org.apache.maven.plugins:maven-install-plugin插件的install目标.

    三.插件目标绑定

    这里的install插件是maven为了简化插件配置操作为我们引入的,还有compile,jar等,详细看自己的项目.

    每个插件可以有多个目标,目标可以绑定生命周期也可以不绑定.

    比如install插件的install目标绑定到了install生命周期,而install:help就没有绑定

    也可以在项目中配置插件的时候自己将目标绑定到生命周期,这个不讨论,先看默认绑定

    可以通过下面命令查看

    mvn help:describe -Ddetail -Dplugin=install

    如果没有插件前缀,用全称

    mvn help:describe -Ddetail -Dplugin=org.mybatis.generator:mybatis-generator-maven-plugin:1.3.6

     

    Goal Prefix为插件前缀,help目标没有绑定生命后期,install绑定了install生命周期

    mvn help调用了maven-help-plugin插件,目标是describe

    四.调用生命周期和执行插件目标

    调用生命周期的阶段会执行绑定到相关联阶段的每个目标

    例如执行default生命周期的install阶段,会先执行validate,compile ,test,package,verify这些阶段.

    而compile插件的comile目标绑定了compile阶段

    surfire的test目标绑定了test阶段,

    还有jar插件等等,

    所以会先执行这些目标,再执行绑定到install阶段的install插件的install目标.

    而直接执行install:install,仅仅执行了install插件的install目标,并没有执行编译打包等操作,这个install目标只会将打包好的jar包复制到本地版本库,

    而打包阶段根本没有执行,找不到文件,所以会报错assign a file.

    至于为什么install插件的install目标可以准确找到jar插件打包好的jar文件,不清楚,有时间在研究.有了解的希望指导下.

    一般来说,绑定到生命周期的目标,调用idea的maven面板的lifecycle就好了.

    没有绑定也不需要绑定的,比如help目标,直接执行就可以.

  • 相关阅读:
    VisualStudioCode网页开发常用插件
    java项目报错 :A class file was not written. The project may be inconsistent...
    java抽象类及接口
    博客园首页美化----js添加分割线
    WordPress安全/速度优化(此篇持续更新)
    wordpress宝塔lnmp下安装以及调优(此篇持续更新)
    wordpress之avada安装全过程(此篇持续更新)
    Wordpress之使用阿里云Oss存储
    Linux基础学习(一)虚拟机安装&CentOS8.1安装
    docker安装配置使用
  • 原文地址:https://www.cnblogs.com/ptqueen/p/8398794.html
Copyright © 2020-2023  润新知