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个阶段了。
因此使用方法二可以解决问题。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于Office弹窗+横幅提示“你的许可证不是正版,并且你可能是盗版软件的受害者…”的解决方案——以Office2019为例

    关于Office弹窗+横幅提示“你的许可证不是正版,并且你可能是盗版软件的受害者…”的解决方案——以Office2019为例文章目录遭遇问题未成功解决的错误方法解决方案附录-各个版本Office对应更换密钥Office2019版本Office2016版本Office2013版本遭遇问题        前一段时间,博主电脑的Office2019软件忽然开始在每次打开时弹出“你的许可证不是正版,并且你可能是盗版软件的受害者。使用正版Office,避免干扰并保护你的文件安全。”的弹窗+横幅提示,因为博主要准备答辩暂且搁置了这个问题。直到今天撰写材料

    2022年7月19日
    113
  • Linux面试题整理[通俗易懂]

    Linux面试题整理[通俗易懂]Linux概述什么是LinuxLinux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。什么是Linux内核?Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。系统内存管理 应用

    2022年5月7日
    51
  • 无刷直流电机模糊PID控制「建议收藏」

    无刷直流电机在克服了有刷直流电机机械换相缺点的同时,又具有结构简单、运行可靠以及调速性能好等优点,在很多领域中得到了广泛的应用。本次课题阐述了无刷直流电机的基本结构、运行原理和数学模型,并以无刷直流电机为被控对象,根据电机的特点和控制要求确定了三闭环控制策略,分别是位置、转速及电流环控制三者之间实行串级连接。采用模糊PID控制理论,搭建无刷直流电机和控制器的仿真模型来验证电机控制策略的可行性,使要能使伺服控制器的具体性能满足:无静差,响应快,超调量小的设计要求。结合三闭环控制结构的特点,在位置环中采用模

    2022年4月16日
    69
  • JavaScript打印三角形

    JavaScript打印三角形利用 JavaScript 打印三角形 1 直角三角形 i 控制行数 for vari 0 i lt 5 i 打印星星 星星的个数跟行数一样 for varj 0 j lt i j document write 打印换行

    2025年10月11日
    5
  • Oracle listagg去重distinct三种方法总结

    Oracle listagg去重distinct三种方法总结一、简介最近在工作中,在写oracle统计查询的时候,遇到listagg聚合函数分组聚合之后出现很多重复数据的问题,于是研究了一下listagg去重的几种方法,以下通过实例讲解三种实现listagg去重的方法。二、方法首先还原listagg聚合之后出现重复数据的现象,打开plsql,执行如下sql:selectt.department_namedepname,…

    2025年9月27日
    1
  • Furion Scheduler的混合负载管理

    Furion Scheduler的混合负载管理转 http www transwarp cn news detail id 203 多租户场景下实现 Inceptor 中的作业调度是复杂的 不仅要考虑到任务自身的优先级和资源占用情况 而且要结合不同用户 组 角色的权限以及资源配额限制 做细粒度的调度管理 通常会遇到以下几项问题 1 资源被大批处理任务占用 导致小的报表任务一直无法被调度 2 某个用户持续提交任务

    2025年9月21日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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