如果一个项目,你想安装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.

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目标,直接执行就可以.

maven中 install的install:install的区别的更多相关文章

  1. Maven 中的dependencies与dependencyManagement的区别

    1.dependencyManagement 在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器 在pom.xml文件中,jar的版本判断的 ...

  2. maven中的 dependencies 和 dependencyManagement 的区别

    今天我在配置 sellercenter 的接口测试环境的时候,发现一些依赖的写法不太一致: 比如有的依赖的<scope>是写在子项目中的 <dependencies> 下的&l ...

  3. pod install 和 pod update的区别

    pod install 和 pod update的区别 pod install(下载并安装pod) 1,当pod file文件中有“增加pod,删除pod,修改pod”的操作之后使用. 2,pod i ...

  4. 如何在eclipse中使用mvn clean install

    1.在Maven项目或者pom.xml上右键——>Run As ——>“Maven Build...”或者Run Configuration——>“Maven Build” 2.在“ ...

  5. conda install和pip install区别

    conda ≈ pip(python包管理) + virtualenv(虚拟环境) + 非python依赖包管理 级别不一样conda和yum比较类似,可以安装很多库,不限于Python.conda是 ...

  6. npm install、npm install --save与npm install --save-dev区别

    npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...

  7. npm install、npm install --save、npm install --save --dev、npm install -S、npm install -D的区别

    npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...

  8. 【转】npm install、npm install --save与npm install --save-dev区别

    原文: https://blog.csdn.net/qq_30378229/article/details/78463930 ------------------------------------- ...

  9. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4: install (default-install) on project authorizationManagement-service: Failed to install metadata com.dmsdbj.itoo:autho

    今天在打包时遇到这个问题: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4: inst ...

随机推荐

  1. 【Django】【环境配置】Mac

    mysql环境配置:http://www.cnblogs.com/chenmo-xpw/p/6102933.html

  2. modal结合art-template

    内容div <div id="modal-cont"></div> 模板tpl <script id="modal-tpl" ty ...

  3. django会话session

    因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的.通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静 ...

  4. Rxbus的使用

    Rxbus是一种模式,在RxJava中 一.添加依赖 compile 'io.reactivex:rxandroid:1.2.0' compile 'io.reactivex:rxjava:1.1.5 ...

  5. Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor

    转自:https://blog.csdn.net/u013125680/article/details/43887987 解决方案:把java的类库加载进去,在工程上右键选择属性->Java B ...

  6. 第 7 章 多主机管理 - 046 - 创建 Machine

    创建 Machine Machine 就是运行 docker daemon 的主机. “创建 Machine” 指的就是在 host 上安装和部署 docker. 创建第一个 machine: hos ...

  7. PhantomJS框架(初识无头浏览器)

    博主今天看到大神聊起 headless,首先我去了解了下这个概念  无头浏览器 selenium框架是有头浏览器的代表,即可看得见的浏览器 而headless browser无头浏览器,即看不见的浏览 ...

  8. Ruby 基础教程 第一部分总结

    第一部分:Ruby 初体验 第一章: Ruby 初探 前言 开头的这一章节讲了一些十分基础的内容,重要的几个话题有: ruby 命令的执行方法 对象.方法的概念 常见的打印方法 ruby 命令的执行方 ...

  9. 练习:将值是null的数据删除掉(剔除):com.fasterxml.jackson.annotation.JsonInclude;包

    练习:将值是null的数据删除掉(剔除):com.fasterxml.jackson.annotation.JsonInclude;包 例如,有数据是null,不想展示 { "statusC ...

  10. 雷林鹏分享:C# 变量

    C# 变量 一个变量只不过是一个供程序操作的存储区的名字.在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局.范围内的值可以存储在内存中,可以对变量进行一系列操作. 我们已经讨论 ...