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.
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的区别的更多相关文章
- Maven 中的dependencies与dependencyManagement的区别
1.dependencyManagement 在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器 在pom.xml文件中,jar的版本判断的 ...
- maven中的 dependencies 和 dependencyManagement 的区别
今天我在配置 sellercenter 的接口测试环境的时候,发现一些依赖的写法不太一致: 比如有的依赖的<scope>是写在子项目中的 <dependencies> 下的&l ...
- pod install 和 pod update的区别
pod install 和 pod update的区别 pod install(下载并安装pod) 1,当pod file文件中有“增加pod,删除pod,修改pod”的操作之后使用. 2,pod i ...
- 如何在eclipse中使用mvn clean install
1.在Maven项目或者pom.xml上右键——>Run As ——>“Maven Build...”或者Run Configuration——>“Maven Build” 2.在“ ...
- conda install和pip install区别
conda ≈ pip(python包管理) + virtualenv(虚拟环境) + 非python依赖包管理 级别不一样conda和yum比较类似,可以安装很多库,不限于Python.conda是 ...
- npm install、npm install --save与npm install --save-dev区别
npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...
- 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 ...
- 【转】npm install、npm install --save与npm install --save-dev区别
原文: https://blog.csdn.net/qq_30378229/article/details/78463930 ------------------------------------- ...
- [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 ...
随机推荐
- 【前端开发工具】WijmoJS 2018 v3 正式发布,全面支持Angular7
WijmoJS(前端开发工具包)2018年度第三个大版本已经正式发布,本次更新除了全面支持Angular7之外,还允许用户使用Web Workers在前端更高效地导出PDF.智能的分组表头属性.全新的 ...
- Git stash 常用命令
参考: Git: How to look at the stash Git学习笔记05--git stash Git stash 常用命令 1.git stash: 保存当前的工作进度: 2.git ...
- vue.js精讲01
笔记及源码地址 : https://github.com/wll8/vue_note 01 2017-09-13 view一个 mvvm框架(库),和 ag 类似.比较小巧,容易上手. mvc: mv ...
- Linux的vi编辑器笔记
vi编辑器,全称是visual interface,可以执行输出.删除.查找.替换等众多的文本操作. vi并不是一个排版程序,不可以对字体.格式.段落等其他的属性进行编排. vi是全屏文本编辑程序,没 ...
- JqGrid 列时间格式化
{name:'createTime',index:'createTime',label:"创建时间", editable:false,formatter:"date&qu ...
- Java处理微信公众号文章图片不显示微信
http://blog.csdn.net/just4you/article/details/52933620
- NOI2017 游记
成功在NOI2017退役……现在的我已经是一只退役狗了 结果也一直到了退役,我都还不会半平面交,不会单纯形,不会非旋转版Treap…… FWT我也不熟,分治FFT我也只写过一道板子题 但是现在已经退役 ...
- JaveWeb 公司项目(6)----- 通过ToolTip给控件添加动态注释
现在公司的项目进展到了视屏这一块,关于海康网页端的构建我会另外写一篇博客来详细讲解,这一篇的博文主要讲的是我刚刚遇到的一个小问题 连接上了视屏之后,将控制按钮换成图标,方位按钮比较好理解,调焦调距的按 ...
- 在JAVA中返回类型使用泛型T和Object有什么区别?
最近在读jackson源码的时候发现有段代码返回类型写的是<T> T,而我自己一般写的是Object.上网搜了下这个语法糖,在stackoverflow上找到一个比较简单易懂的解释,搬运过 ...
- c++ cmakelist 详解
基本元素 首先cmaklist必须包括以下几个部分: #工程名 project(study_case) #cmake最低版本需求 cmake_minimum_required(VERSION 2.8. ...