返回顶部
首页 > 资讯 > 后端开发 > Python >IDEA中maven的Lifecycle和Plugins的区别
  • 907
分享到

IDEA中maven的Lifecycle和Plugins的区别

mavenLifecycle和Plugins区别ideamavenLifecycle 2023-03-01 11:03:38 907人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录idea Maven 的 Lifecycle 与 Plugins生命周期(Lifecycle)阶段(Phase)插件(plugin)和目标(Goal)补充:idea中maven的

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)

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

更多请参考官方文档:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

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是一个阶段。

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

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

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

1.Clean Lifecycle

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

2.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

3.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 install
mvn verify install:install

参考资料:

Https://blog.csdn.net/gao_zhennan/article/details/89713407

https://www.cnblogs.com/zhaiqianfeng/p/4620138.html

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

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

在这里插入图片描述

到此这篇关于IDEA 中 maven 的 Lifecycle 和Plugins 的区别的文章就介绍到这了,更多相关maven 的 Lifecycle 和Plugins区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

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

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

猜你喜欢
  • IDEA中maven的Lifecycle和Plugins的区别
    目录IDEA maven 的 Lifecycle 与 Plugins生命周期(Lifecycle)阶段(Phase)插件(plugin)和目标(goal)补充:idea中maven的...
    99+
    2023-03-01
    maven Lifecycle 和Plugins区别 idea maven Lifecycle
  • IDEA中maven的Lifecycle和Plugins有什么区别
    这篇“IDEA中maven的Lifecycle和Plugins有什么区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“IDE...
    99+
    2023-07-05
  • Maven中plugins与pluginManagement的区别说明
    plugins与pluginManagement的区别 plugins 下的 plugin 是真实使用的,而 pluginManagement 下的 plugins 下的 plugi...
    99+
    2024-04-02
  • Maven中dependency和plugins的继承与约束
    目录Maven的父子项目父项目配置子项目定义dependenciesdependencyManagementpluginManagement总结Maven的父子项目 父子项目核心点是...
    99+
    2022-12-19
    Maven中dependency继承 Maven中dependency约束 Maven中plugins继承 Maven中plugins约束
  • idea创建SpringBoot项目时Type选maven project和maven pom的区别是什么
    这篇文章主要讲解了“idea创建SpringBoot项目时Type选maven project和maven pom的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习...
    99+
    2023-07-05
  • 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项目
  • idea中All和Thread的区别是什么
    这篇文章主要介绍“idea中All和Thread的区别是什么”,在日常操作中,相信很多人在idea中All和Thread的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”idea中All和Thread...
    99+
    2023-06-29
  • eclipse和idea的区别有哪些
    Eclipse是一个开源的集成开发环境(IDE),支持多种语言如Java、C/C++、PHP等,而IntelliJ IDEA是一...
    99+
    2024-04-02
  • Maven中的SnapShot版本和正式版本的区别
    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制。在Maven依赖管理中,唯一标识一个依赖项...
    99+
    2024-04-02
  • idea中git pull和update project区别
    1.性质不同 git pull是Git的原生命令;而update project不是Git的原生命令,是IDEA对Git的封装扩展。 2.作用不同 git pull的作用是从远程分支上拉取最新版本代码到本地,并自动合并me...
    99+
    2023-10-29
    区别 git idea
  • idea社区版和商业版的区别有哪些
    小编给大家分享一下idea社区版和商业版的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!区别:1、IDEA商业版的主要功能为智能代码助手、代码自动提示、...
    99+
    2023-06-14
  • idea中断点类型之All和Thread的区别介绍
    All模式  所有的线程都要在当前位置被阻塞,谁先来就先阻塞谁,发生阻塞时其他的线程当前时刻执行到哪里就在哪里进行原地等待。如果此时按下一步F6,那所有的线程都通过阻塞代码...
    99+
    2024-04-02
  • IDEA2023创建Maven Archetype和创建旧版本Maven的区别,主要是针对Maven Archtype。
    IDEA2023创建Maven Archetype和创建旧版本Maven的区别,主要是针对Maven Archtype。 使用配置: 编译器:ideaJDK:jdk 17 注意:文章篇幅有点长,若省时...
    99+
    2023-09-17
    maven java intellij-idea
  • mybatis中的#和$的区别
    #相当于对数据 加上 双引号,$相当于直接显示数据  #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "11...
    99+
    2023-06-02
  • python中=和==的区别
    python中“=”表示的是赋值,是将某一数值赋给某个变量,且无返回值;而“==”表示的是判断两个数据是否相等,其返回值为True或False。实例:a = 33 == 4print(a)输出结果为:3false...
    99+
    2024-04-02
  • Mybatis中#和$的区别
    在使用mybatis框架开发项目编写SQL语句的时候,经常需要用到变量替换值,那么用来替换变量值的操作经常用到$和#这两个符号,同样在一些Java面试中也经常被问到它们的区别。那么它们在使用上面有什么区别呢?下面根据使用情况分析总结,两者的...
    99+
    2023-09-02
    大数据 java mybatis mysql
  • php中=和==的区别
    php 中 = 和 == 是不同的运算符,= 用于分配值,返回分配的值,而 == 用于比较两个值是否相等,返回布尔值。== 是类型敏感的,而 = 则不是。 PHP 中 = 和 == 的...
    99+
    2024-04-27
  • php中=和==的区别
    php 中 = 和 == 是不同的运算符,= 用于分配值,返回分配的值,而 == 用于比较两个值是否相等,返回布尔值。== 是类型敏感的,而 = 则不是。 PHP 中 = 和 == 的...
    99+
    2024-04-27
  • php中==和===的区别
    php 中 == 和 === 的区别 PHP 中的 == 和 === 都是相等比较运算符,但它们在比较方式上存在差异。 == 松散比较:比较两个值的内容,但允许类型转换。 例如: '1...
    99+
    2024-04-27
  • c++中::和.的区别
    c++++ 中 :: 和 . 的区别 回答:C++ 中的 :: 和 . 是两个不同的运算符,用于访问类成员和全局成员。 详细解释: 1. ::(范围解析运算符) 用于访问全局成员,包括...
    99+
    2024-04-26
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作