首页 > 其他分享 >IDEA 中 maven 的 Lifecycle 和Plugins 的区别

IDEA 中 maven 的 Lifecycle 和Plugins 的区别

时间:2024-08-01 14:07:45浏览次数:12  
标签:插件 clean IDEA maven install Plugins 执行 Lifecycle

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)

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

更多请参考官方文档: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 程序
  • 目标:插件程序的一个执行参数

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

例子:

?
1mvn 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 阶段)。所以以下两种写法其实最终实现效果是等价的。

?
12mvn installmvn 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区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

                        <div class="art_xg">
                            <b>您可能感兴趣的文章:</b><ul><li><a href="/article/278071.htm" title="下载远程maven仓库的jar&nbsp;手动放到本地仓库详细操作" target="_blank">下载远程maven仓库的jar&nbsp;手动放到本地仓库详细操作</a></li><li><a href="/article/278017.htm" title="解决问题:Failed&nbsp;to&nbsp;execute&nbsp;goal&nbsp;org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources" target="_blank">解决问题:Failed&nbsp;to&nbsp;execute&nbsp;goal&nbsp;org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources</a></li><li><a href="/article/277587.htm" title="maven导入本地仓库jar包,报:Could&nbsp;not&nbsp;find&nbsp;artifact的解决" target="_blank">maven导入本地仓库jar包,报:Could&nbsp;not&nbsp;find&nbsp;artifact的解决</a></li><li><a href="/article/277259.htm" title="Maven项目修改JDK版本全过程" target="_blank">Maven项目修改JDK版本全过程</a></li><li><a href="/article/277249.htm" title="Spring&nbsp;Boot结合IDEA自带Maven插件如何快速切换profile" target="_blank">Spring&nbsp;Boot结合IDEA自带Maven插件如何快速切换profile</a></li><li><a href="/article/276767.htm" title="Maven&nbsp;项目用Assembly打包可执行jar包的方法" target="_blank">Maven&nbsp;项目用Assembly打包可执行jar包的方法</a></li><li><a href="/article/279557.htm" title="浅谈一下maven优缺点及使用和特点" target="_blank">浅谈一下maven优缺点及使用和特点</a></li></ul>
                        </div>

                    </div>

原文链接:https://www.jb51.net/article/276738.htm

标签:插件,clean,IDEA,maven,install,Plugins,执行,Lifecycle
From: https://www.cnblogs.com/sunny3158/p/18336532

相关文章

  • Maven手动添加jar项目导本地、通过pom.xml引入依赖、打包后依然生效
    1、到jar包目录、cmd以管理员身份运行、执行如下命令mvninstall:install-file-Dfile=sqljdbc4.jar-Dpackaging=jar-DgroupId=com.microsoft.sqlserver-DartifactId=sqljdbc4-Dversion=4.02、pom.xml进行引入`<dependency> <groupId>com.microsoft.sqlserver</groupI......
  • gitlab上面的项目如何整到本地的idea中
    ......
  • maven jar包 导入 添加 本地仓库 指定仓库 (mvn install:install-file)
    有时候会遇到将jar包导入本地仓库的需求。因为有些驱动包比较冷门,在公司的私服(远程仓库)里没有,为了在本地先跑起来,先添加到本地仓库。一、指定仓库执行命令: mvninstall:install-file-Dfile=D:\java\mavenData\xxxJdbcDriver2.jar-DgroupId=com.ali-DartifactId=xxx-jdbc......
  • Maven基础
    什么是MavenMaven是apache旗下的一个开源项目,是一款用于管理和构建Java项目的工具,基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建Apache软件基金会,成立于1997年7月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织......
  • IDEA 字节码工具 jclasslib bytecode viewer
    IDEA字节码工具jclasslibbytecodeviewer 1.下载安装 首先我们在IDEA的插件市场中搜索jclasslibbytecodeviewer和进行下载安装,安装过后根据IDEA版本的不同,可能需要重启才能使用。   2.使用 下载安装过后,在我们的项目中,首先先将整个项目进行编译,编译的......
  • 适用于 JDK 1.8 的 Spring Boot 的 maven 的 pom.xml 模板
    适用于JDK1.8的SpringBoot的maven的pom.xml模板 <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:sche......
  • 如何通过✅ IPIDEA代理IP,轻松实现数据采集和市场拓展工作(上)
    如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作(上)如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作前言介绍代理IP在跨境电商和数据采集中的重要性一、跨境电商与代理IP代理IP在跨境电商中的作用主要优势:二、爬虫数据采集与代理IP数据爬取痛点如何解决?......
  • 如何通过✅ IPIDEA代理IP,轻松实现数据采集和市场拓展工作(下)
    如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作前言IPIDEA爬虫实战实战Demo演示总结如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作前言在当今全球化市场的浪潮中,跨境电商和数据采集已经......
  • 用idea实现第一个springBoot
    hello@Controller@RequestMapping("/hello")publicclassHelloController{@GetMapping("/hello")@ResponseBodypublicStringhello(){return"hello";}} 更改端口号#更改端口号server.port=8081banner.tx......
  • Maven生命周期
     Maven生命周期通过IDEA工具的辅助,能很轻易看见Maven的九种生命周期命令,如下: 双击其中任何一个,都会执行相应的Maven构建动作,为啥IDEA能实现这个功能呢?道理很简单,因为IDEA封装了Maven提供的命令,如:点击图中的clean,本质是在当前目录中,执行了mvnclean命令,下面解释一下每个命令......