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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • centos7.4安装docker_docker打包python应用

    centos7.4安装docker_docker打包python应用前言当我们在一台电脑上搭建了python3.6的环境,下次换台电脑,又得重新搭建一次,设置环境变量等操作。好不容易安装好,一会提示pip不是内部或外部命令,一会又提示pip:commandno

    2022年7月29日
    10
  • 模拟Hibernate框架的小demo

    模拟Hibernate框架的小demo

    2021年8月24日
    54
  • xenu死链检测工具使用教程

    xenu死链检测工具使用教程原理:从待测网站的根目录开始搜索所有的网页文件,对所有网页文件中的超级链接、图片文件、包含文件、CSS文件、页面内部链接等所有链接进行读取,如果是网站内文件不存在、指定文件链接不存在或者是指定页面不存在,则将该链接和处于什么文件的具体位置记录下来,一直到该网站所有页面中的所有链接都测试完后才结束测试,并输出测试报告。https://www.jianshu.com/p/1517ece9c227…

    2022年7月23日
    13
  • PS磨皮滤镜插件:Portraiture 3 for Mac激活成功教程版永久激活方法

    PS磨皮滤镜插件:Portraiture 3 for Mac激活成功教程版永久激活方法为大家推荐Mac上最好用的一款PS磨皮滤镜Portraiture。PortraiturMac主要用于人像图片润色,它可以在保持皮肤的色泽的情况下对图像中的皮肤、头发、眉毛、睫毛等部位进行平滑的疵点处理,功能强大。现为大家带来磨皮滤镜portraituremac激活成功教程版,软件内附激活成功教程补丁,可以助您成功激活成功教程激活portraiture磨皮滤镜。磨皮插件portraiture怎么安装port…

    2022年7月22日
    373
  • ROR 环境的 搭建

    ROR 环境的 搭建

    2021年11月16日
    59
  • android之View的启动过程[通俗易懂]

    程序里调用了onSizeChanged方法进行了一些设置,不知道onSizeChanged是在什么时候启动的,所以研究了一下View的启动流程代码如下:public class TestView extends View { public TestView(Context context) { super(context); Log.d(“mDebug”, “TestV

    2022年3月10日
    34

发表回复

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

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