返回顶部
首页 > 资讯 > 精选 >IDEA中maven的Lifecycle和Plugins有什么区别
  • 538
分享到

IDEA中maven的Lifecycle和Plugins有什么区别

2023-07-05 08:07:14 538人浏览 安东尼
摘要

这篇“idea中Maven的Lifecycle和Plugins有什么区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“IDE

这篇“ideaMaven的Lifecycle和Plugins有什么区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“IDEA中maven的Lifecycle和Plugins有什么区别”文章吧。

    IDEA maven 的 Lifecycle 与 Plugins

    IDEA 主界面右侧 Maven 标签栏有同样的命令,比如 install,既在 Plugins 中存在,也在 Lifecycle中存在。到底选哪个?二者又有什么区别呢?

    经过实验,很多时候都是 Plugins中的命令报错,而 Lifecycle 中的命令正常执行。那么是不是说 Plugins 根本就没有必要存在?存在了还混淆视听?

    要解答这个问题,首先要了解这两处的命令到底有什么差异。而之前,要先了解 Maven 的生命周期、阶段、插件和目标之间的关系。

    生命周期(Lifecycle)

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

    Maven 内置的三套生命周期:

    • Clean Lifecycle:做一些清理工作

      • pre-clean --> clean --> post-clean

    • Default LifeCycle:构建的核心部分、编译、测试、打包、部署等

      • validate --> compile --> test --> package --> integration-test --> verify --> install --> deploy

    • Site Lifecycle:生成项目报告、站点、发布站点

      • pre-site --> site --> post-site --> site-deploy

    阶段(Phase)

    每套生命周期都是一组阶段组成。

    Clean Lifecycle

    • pre-clean 执行一些需要在 clean 之前完成的工作

    • clean 移除所有上一次构建所生成的文件

    • post-clean 执行一些需要在 clean 之后立即完成的工作

    Default Lifecycle

    • validate 验证项目正确且所需信息都可获得

    • initialize 初始化构建状态,如:设置属性值、创建目录

    • generate-sources 生成编译过程中需要对导入进行操作的源码

    • process-sources 处理源码,如:过滤值

    • generate-resources 为包中的导入依赖生成资源

    • process-resources 复制并处理资源文件至目标目录,准备打包

    • compile 编译项目的源代码

    • process-classes 处理并测试源码,如:过滤值

    • generate-test-sources

    • process-test-sources

    • generate-test-resources

    • process-test-resources 复制并处理资源文件,至目标测试目录

    • test-compile 编译测试源码

    • process-test-classes

    • test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署

    • prepare-package

    • package 接收编译好的代码,打包成可发布的格式,如:jar

    • pre-integration-test

    • integration-test

    • post-integration-test

    • verify

    • install

    Site Lifecycle

    • pre-site 执行一些需要在生成站点文档之前完成的工作

    • site 生成项目的站点文档

    • post-site 执行一些需要在生成站点文档之后完成的工作,并为部署做准备

    • site-deploy 将生成的站点文档部署到特定的服务器

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

    例如,Clean Lifecycle有 3 个阶段,按顺序依次为:

    • pre-clean

    • clean

    • post-clean

    则若执行命令 mvn clean 实际按顺序执行了 Clean Lifecyclepre-cleanclean

    • 那么如果只想执行第 2 个阶段呢,那就执行命令 mvn clean:clean(这就是下面要提到的插件:目标的执行方式了)

    插件(plugin)和目标(Goal)

    一个阶段由插件与目标组成。

    可以理解为:

    • 一个阶段:一个步骤

    • 插件:打成 jar 包的 java 程序

    • 目标:插件程序的一个执行参数

    即向插件程序传入一个执行参数并执行一次该插件程序,就等于进行了一个步骤。

    例子:

    mvn compiler:compile

    compiler 是插件,compile 是目标,compiler:compile是一个阶段。

    插件:目标 表示一个特定任务,阶段是生命周期中的特定步骤。

    有些阶段声明绑定的插件:目标(即通过执行相应的插件:目标来实现),有些阶段没有声明绑定的插件:目标,是通过其他方式来实现的。

    生命周期及包含阶段,阶段声明绑定的插件:目标如下:

    Clean Lifecycle

    顺序阶段插件:目标



    1pre-clean
    2cleanclean:clean
    3post-clean

    Default Lifecycle

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

    Site Lifecycle

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

    在 IDEA 中使用 Lifecycle 下的 install (等价于在命令行执行 mvn install),代表执行的是 生命周期 的一个阶段(会自动先执行之前的所有阶段)。

    如上所示,install 阶段前有 21 个阶段,即 mvn install 会先执行前面的 21 个阶段,之后再执行 install 这个阶段。

    而作为对比,IDEA 中使用 Plugin 下的 install(等价于在命令行执行 mvn install:install),代表执行的是 插件:目标,它单独执行,不会先去执行之前的 21 个阶段。

    另外,由于 生命周期 可以和 插件:目标 一起执行,所以可以先执行 verify 生命周期(执行 1~21 阶段),再执行 install:install(第 22 阶段)。所以以下两种写法其实最终实现效果是等价的。

    mvn installmvn verify install:install

    补充:idea中maven的Plugins和 Lifecycle 区别

    如果在Plugins里面安装会出现问题,因为Plugins安装,只会执行安装操作,而maven生命周期安装之前的操作都不会执行 ,就会安装失败。但是使用 Lifecycle中的install的话,在执行instal生命阶段之前的说有生命周期阶段,包括(clean compiler test package)

    IDEA中maven的Lifecycle和Plugins有什么区别

    以上就是关于“IDEA中maven的Lifecycle和Plugins有什么区别”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: IDEA中maven的Lifecycle和Plugins有什么区别

    本文链接: https://lsjlt.com/news/350372.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • IDEA中maven的Lifecycle和Plugins有什么区别
      这篇“IDEA中maven的Lifecycle和Plugins有什么区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“IDE...
      99+
      2023-07-05
    • IDEA中maven的Lifecycle和Plugins的区别
      目录IDEA maven 的 Lifecycle 与 Plugins生命周期(Lifecycle)阶段(Phase)插件(plugin)和目标(goal)补充:idea中maven的...
      99+
      2023-03-01
      maven Lifecycle 和Plugins区别 idea maven Lifecycle
    • Maven中plugins与pluginManagement的区别说明
      plugins与pluginManagement的区别 plugins 下的 plugin 是真实使用的,而 pluginManagement 下的 plugins 下的 plugi...
      99+
      2024-04-02
    • idea创建SpringBoot项目时Type选maven project和maven pom的区别是什么
      这篇文章主要讲解了“idea创建SpringBoot项目时Type选maven project和maven pom的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习...
      99+
      2023-07-05
    • idea中All和Thread的区别是什么
      这篇文章主要介绍“idea中All和Thread的区别是什么”,在日常操作中,相信很多人在idea中All和Thread的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”idea中All和Thread...
      99+
      2023-06-29
    • idea创建SpringBoot项目时Type选maven project和maven pom有何区别
      1)打开idea,开始创建SpringBoot项目 2)选择 Spring Initializr ,选择合适的jdk版本,点击Next 在操作到Type选项时有四种项目类型可供选...
      99+
      2023-02-23
      maven project和maven pom区别 maven project和maven pom idea创建springboot项目
    • eclipse和idea的区别有哪些
      Eclipse是一个开源的集成开发环境(IDE),支持多种语言如Java、C/C++、PHP等,而IntelliJ IDEA是一...
      99+
      2024-04-02
    • MyBatis中的#{}和${}有什么区别
      这篇文章主要介绍了MyBatis中的#{}和${}有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言在MyBatis 的映射配置文件中,动态传递参数有两种方式:#{...
      99+
      2023-06-21
    • java中 ${} 和 #{} 有什么区别
      目录前言1.功能不同1.1 ${} 的问题2.使用场景不同3.安全性不同3.1 使用 ${} 实现用户登录3.2 使用 #{} 实现用户登录总结前言 ${} 和 #{} 都...
      99+
      2024-04-02
    • /” 和 “\” 有什么区别
      键盘上的“/” 和 “\”这个两个“斜杠”有什么区别。 通常,“/”被叫作“正斜杠”,英语是forward slash,经常简称为slash。Windows命令用\,中文排版用/。而“\” 被叫作“反斜杠”,英语是backward sla...
      99+
      2023-09-25
      前端 java 服务器 Powered by 金山文档
    • python中“==”和“is”有什么区别
      本篇内容主要讲解“python中“==”和“is”有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中“==”和“is”有什么区别”吧!“==” 和 “is”之间有什么区别?“...
      99+
      2023-06-27
    • Java中==和equals有什么区别
      本文小编为大家详细介绍“Java中==和equals有什么区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中==和equals有什么区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。== 是 Java...
      99+
      2023-06-27
    • Linux中[./]和[/]和[.]之间的区别有什么
      本篇文章为大家展示了Linux中[./]和[/]和[.]之间的区别有什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。/是指根目录,就和Windows的我的电脑那个位置差不多。./是指用户所在的当前...
      99+
      2023-06-28
    • MySQL的@和@@有什么区别
      本篇内容主要讲解“MySQL的@和@@有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的@和@@有什么区别”吧!MySQL的@与@@区别@x ...
      99+
      2024-04-02
    • idea社区版和商业版的区别有哪些
      小编给大家分享一下idea社区版和商业版的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!区别:1、IDEA商业版的主要功能为智能代码助手、代码自动提示、...
      99+
      2023-06-14
    • nodejs中path.join和path.resolve的有什么区别
      这篇文章主要讲解了“nodejs中path.join和path.resolve的有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs中pat...
      99+
      2024-04-02
    • css中的link和@import有什么区别
      这篇文章给大家分享的是有关css中的link和@import有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   link和@import的区别:   1、从属关系区...
      99+
      2024-04-02
    • jQuery中的hover()和toggle()有什么区别
      这篇文章主要介绍了jQuery中的hover()和toggle()有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。jQuery中的h...
      99+
      2024-04-02
    • MyBatis中的sqlSessionFactory和sqlSession有什么区别
      在MyBatis中,sqlSessionFactory和sqlSession是两个重要的对象,它们分别有不同的作用和功能。 sq...
      99+
      2024-04-09
      MyBatis
    • Gluon中的Symbol和NDArray有什么区别
      Array ...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作