Maven报错:The packaging for this project did not assign a file to the build artifact[通俗易懂]

Maven报错:The packaging for this project did not assign a file to the build artifact[通俗易懂]一、问题发生    我想使用IDEA的Maven管理工具将项目安装到本地仓库,于是选择了Plugins下的install:install去执行,如下图所示:结果出现了如下报错信信息:[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-install-…

大家好,又见面了,我是你们的朋友全栈君。

一、问题发生

       我想使用IDEA的Maven管理工具将项目安装到本地仓库,于是选择了Plugins下的install:install去执行,如下图所示:

在这里插入图片描述
结果出现了如下报错信信息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-cli) on project test: The packaging for this project did not assign a file to the build artifact -> [Help 1]>

二、问题解决

       因问题分析比较长,怕没耐心看完。故将解决方案放在前边

方法一:使用Maven管理工具下的LifeCycle(生命周期)中的install,如下图所示 。网上也可以搜到这种解决方法,但是他的说法,
“使用Lifecycle中的install,项目就会自动去maven仓库下载需要的包”是错误的。

在这里插入图片描述
方法二:使用Maven管理工具 工具栏中的Execute Maven Goal,如下图所示
在这里插入图片描述
点击打开,输入Maven命令,特殊说明:在windows的cmd中执行命令,需要在最前面加上mvn,而在这里不需要,如下图所示:
在这里插入图片描述

三、问题分析

       解决问题很简单,知道问题为什么产生确不容易。然而这也是最重要的,要知其然更要知其所以然。通过下文,你可以了解到Maven的生命周期、阶段、插件和目标之间的关系,弄清楚关系之后,就可以明白,解决方案一和二的原理,并可以提出新的解决方案。OK,废话不多说,进入正文。

————————————————进入正文—————————————————

1、生命周期(lifecycle)

       Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。

Maven 内置的三套生命周期:

       (1) clean 清理项目

       (2) default 构建、发布项目

       (3) site 生成项目站点

2、阶段(phase)

       
阶段是生命周期的组成部分。特点:阶段在生命周期内具有顺序性,在执行生命周期中某个阶段时会先顺序执行本周期当前阶段之前的所有阶段,再执行当前阶段。

例如:clean周期共有3个阶段,按顺序分别如下:

  1. pre-clean
  2. clean
  3. post-clean

当执行命令mvn clean时,实际按顺序执行了clean生命周期的pre-clean和clean共2个阶段。

3、插件(plugin)和目标(goal)

阶段的执行依赖插件和目标。(对于这句话看个人理解,不太好翻译,官方原话:A Build Phase is Made Up of Plugin Goals)插件从本质上来说插件j是打成jar包的java程序,目标应该是程序的参数。
插件可以单独执行 例如 :
在这里插入图片描述

插件目标表示一个特定的任务,阶段负责生命周期中的特定步骤,它执行职责的方式可能不同。有些阶段声明绑定的插件目标,即通过执行相应目标的方式履行职责,有些阶段没有声明绑定的插件目标,,通过其他方式履行职责。

生命周期及其包含阶段,阶段声明绑定的插件目标见下表
(1)生命周期clean(3个阶段)

顺序 阶段 插件:目标
1 pre-clean
2 clean clean:clean
3 post-clean

(2)生命周期default(23个阶段)

顺序 阶段 插件:目标
1 validate
2 initialize
3 generate-sources
4 process-sources
5 generate-resources
6 process-resources resources:resources
7 compile compiler:compile
8 process-classes
9 generate-test-sources
10 process-test-sources
11 generate-test-resources
12 process-test-resources resources:testResources
13 test-compile compiler:testCompile
14 process-test-classes
15 test surefire:test
16 prepare-package
17 package
18 pre-integration-test
19 integration-test
20 post-integration-test
21 verify
22 install install:install
23 deploy deploy:deploy deploy:deploy

(3)生命周期site(4个阶段)

顺序 阶段 插件:目标
1 pre-site
2 site site:site
3 post-site
4 site-deploy site:deploy

4、总论

在IDEA中使用Lifecycle下的install(即在命令行下执行命令mvn install),mvn install代表执行的是生命周期的一个阶段,由上文知,在执行install阶段先要执行其前面的21个阶段,之后执行install阶段(install阶段的执行依赖插件目标install:install)
在IDEA中使用Plugins下的install:install(即在命令行下执行命令mvn install:install) mvn install:install代表执行的是插件的目标,它单独执行,不会先去执行之前的21个阶段。
因此使用方案一可以解决问题。

又因为生命周期可以和插件目标一起执行,所以先执行verify生命周期阶段,在执行install:install插件,这样同样都是执行22个阶段了。
因此使用方法二可以解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146164.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Centos 7 DNS服务器配置

    Centos 7 DNS服务器配置实验三、DNS的管理配置与应用1实验目的(1)了解DNS(域名系统)的工作原理。(2)掌握Linux操作系统中DNS组件安装。(3)掌握Linux操作系统中DNS服务的配置方法。2实验内容(1)在LinuxCentos7.6操作系统中安装DNS组件并配置DNS服务。3实验原理计算机在网络上进行通讯时只能识别如“203.51.0.73”之类的IP地址,而互联网上的网站无穷多,我们很难记住各网站枯燥的IP地址号,这就产生了方便人们记忆的域名管理系统DNS:DomainNam

  • 大型架构及配置技术之Ansible

    大型架构及配置技术之Ansible

  • webpack(10)webpack-dev-server搭建本地服务器「建议收藏」

    webpack(10)webpack-dev-server搭建本地服务器「建议收藏」前言当我们使用webpack打包时,发现每次更新了一点代码,都需要重新打包,这样很麻烦,我们希望本地能搭建一个服务器,然后写入新的代码能够自动检测出来,这时候就需要用到webpack-dev-ser

  • c++排序函数

    c++排序函数

  • 指令周期的四个阶段_总线周期和时钟周期

    指令周期的四个阶段_总线周期和时钟周期时钟周期时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲…

    2022年10月31日
  • FFmpeg从入门到精通读书笔记(1)

    FFmpeg从入门到精通读书笔记(1)笔者才开始学习音视频开发,FFmpeg从入门到精通读书笔记系列主要是基于阅读刘歧、赵文杰编著的《FFmpeg从入门到精通》以及雷霄骅博士博客总结写的入门心得体会。官方文档资料FFmpeg官方文档:https://ffmpeg.org/documentation.htmlFFmpeg官方wiki:http://trac.ffmpeg.org/wiki中文经典资料雷霄骅博士csdn链…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号