Python 官方文档:入门教程 => 点击学习
目录idea Maven 的 Lifecycle 与 Plugins生命周期(Lifecycle)阶段(Phase)插件(plugin)和目标(Goal)补充:idea中maven的
IDEA 主界面右侧 Maven 标签栏有同样的命令,比如 install
,既在 Plugins
中存在,也在 Lifecycle
中存在。到底选哪个?二者又有什么区别呢?
经过实验,很多时候都是 Plugins
中的命令报错,而 Lifecycle
中的命令正常执行。那么是不是说 Plugins
根本就没有必要存在?存在了还混淆视听?
要解答这个问题,首先要了解这两处的命令到底有什么差异。而之前,要先了解 Maven 的生命周期、阶段、插件和目标之间的关系。
Maven 的生命周期就是对所有构建过程进行抽象和统一,包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几乎所有的构建步骤。
Maven 内置的三套生命周期:
每套生命周期都是一组阶段组成。
更多请参考官方文档:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
Clean Lifecycle
Default Lifecycle
Site Lifecycle
特点:阶段在生命周期内具有顺序性,在执行生命周期中某个阶段时会先按顺序执行本生命周期当前阶段之前的所有阶段,再执行当前阶段。
例如,Clean Lifecycle
有 3 个阶段,按顺序依次为:
则若执行命令 mvn clean
实际按顺序执行了 Clean Lifecycle
的 pre-clean
与 clean
。
mvn clean:clean
(这就是下面要提到的插件:目标
的执行方式了)一个阶段由插件与目标组成。
可以理解为:
即向插件程序传入一个执行参数并执行一次该插件程序,就等于进行了一个步骤。
例子:
mvn compiler:compile
compiler
是插件,compile
是目标,compiler:compile
是一个阶段。
插件:目标
表示一个特定任务,阶段是生命周期中的特定步骤。
有些阶段声明绑定的插件:目标
(即通过执行相应的插件:目标
来实现),有些阶段没有声明绑定的插件:目标
,是通过其他方式来实现的。
生命周期及包含阶段,阶段声明绑定的插件:目标
如下:
1.Clean Lifecycle
顺序 | 阶段 | 插件:目标 |
---|---|---|
1 | pre-clean | |
2 | clean | clean:clean |
3 | post-clean |
2.Default Lifecycle
顺序 | 阶段 | 插件:目标 |
---|---|---|
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 |
3.Site Lifecycle
顺序 | 阶段 | 插件:目标 |
---|---|---|
1 | pre-site | |
2 | site | site:site |
3 | post-site | |
4 | site-deploy | site: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
如果在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
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0