IDEA中Maven项目的生命周期操作说明

摘要:
例如,在编译之前,目标目录已经存在,而logs-log文件目录位于classes目录下。在编译之前修改pom。对于xml中的配置,日志目录从标记中的标记中排除。但是,在只执行编译操作之后,仍然可以查看目标目录。可以看出,以前的日志目录尚未清理。

目录

IDEA中对Maven项目做了相当好的支持,专门有个Maven的模块用于进行项目的操作:

IDEA中Maven项目的生命周期操作说明第1张

上图红框中的内容即开发者经常使用的操作,将英文简单翻译过来,其中文分别为Lifecycle(生命周期)、clean(清理)、validate(验证)、compile(编译)、test(测试)、package(打包)、verify(核实)、install(安装)、site(设置)、deploy(部署),附Maven官网对于Maven项目默认生命周期的说明:

IDEA中Maven项目的生命周期操作说明第2张

根据Maven的生命周期来说,以上的操作中:一个操作必然包含了其前面所有的步骤,换句话说,只有完成了前面的所有步骤,才能执行该操作

看起来比较多,但是对于日常的开发来说,常用操作不过二三,针对几个常用的操作进行测试及说明:

以下分别从IDEA中对Maven项目进行的生命周期操作来观察项目路径下(编译的target文件夹生成在项目路径下,与src目录同级),maven本地仓库中的变化来得出结论

项目路径:

IDEA中Maven项目的生命周期操作说明第3张

本地仓库:

IDEA中Maven项目的生命周期操作说明第4张

clean-清理操作

变化

项目路径下的 target 目录已删除,本地仓库中如果存在之前已安装的该项目包,不会删除

结论

清理掉项目路径下的 target 目录(如果有的话)

compile-编译操作

变化

在项目路径下生成了 target 目录

结论

在项目路径下生成 target 目录,但目录中不包含生成的 jar 包或其他类型包

经测试,compile 操作之前不会先进行 clean 操作,通俗的说:compile 前,target 目录已存在,compile 后,target 目录中的文件不变或增加,但是不会少。

比如:compile 前 target 目录已存在且 classes 目录下存在 logs 日志文件目录,本次 compile 前修改 pom.xml 中的配置,在标签中的标签中排除 logs 目录,但是仅执行 compile 操作后,查看 target 目录还是可以看到之前的 logs 目录,可见并未进行 clean 操作。再测试执行 clean 后再执行 compile,就没有 logs 目录了

package-打包操作

变化

在项目路径下生成了 target 目录

结论

在项目路径下生成 target 目录,目录中包含生成的 jar 包或其他类型包

install-安装操作

变化

在 package 操作基础上,执行 install 后,该项目被部署到了本地仓库中

结论

install操作,将jar包或其他类型包安装到本地仓库中,可供本地其他项目进行引用依赖

deploy-部署操作

在 install 操作的基础上,将项目生成的 jar 包或其他类型包部署到私服仓库中

因未部署私服仓库,所以暂未经过测试

  • clean 操作与其他生命周期不存在先后关系,生命周期的操作进行前都不会进行 clean 操作

  • 推荐 package,install 操作前先进行 clean 操作,或在 Execute Maven Goal 框中输入:mvn clean install,也是先清理后安装的操作

  • maven 项目进行的生命周期的操作,都可以在 IDE 的控制台看到操作步骤或查看日志文件

免责声明:文章转载自《IDEA中Maven项目的生命周期操作说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇xml根据属性去重。如csprj去重Oracle字段下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JS最新技术ES6,结合Vue全局注册,实现Axios封装配置插件!

接下来,带来js全新技术ES6,结合Vue install全局组件实现Axios封装,以代码形式讲解。 1、请求封装 //file:src/api/http/http.js import axios from 'axios' axios.create(); axios.interceptors.request.use((config)=>{ //...

opencv linux

http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html https://www.google.com.hk/search?q=opencv+linux&ie=utf-8&oe=utf-8&gws_rd=cr&ei=f...

Ubuntu-20.04.1 安装 oracle 12.2.0.1 数据库database软件

as of: #!/bin/sh ##ubunt-20.04.1##Linux j 5.4.0-26-generic #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux ##GNU C Library (Ubuntu GLIBC 2.31-0ubuntu9)...

为什么要用Volley中的RequestFuture封装RxJava来用异步请求处理同步请求?

前几天健哥喊我研究一下RvJava,在网络请求用,更简洁更有条理,然后就会抽空研究研究,现在项目里网络库是Volley,就结合项目和网上的demo看,突然脑袋蹦出这个问题,现在看起来这个问题有一点蠢蠢的。 firstly,名词解释一下。 Volley是谷歌爸爸给咱们封装好了的网络请求库,帮我们封装了具体的请求,线程切换以及数据转换,适合短小多并发的网络请求...

Linux的PHP开发环境快速搭建

搭建的环境是LNMP: 1、安装MySQL 这个非常简单我用的是Ubuntu那么就用apt源,下载deb文件然后按照全新安装文档按顺序:a.加入apt库  b.更新apt库 c.安装 d.运行MySQL 下载: https://dev.mysql.com/downloads/repo/apt/ 文档: https://dev.mysql.com/doc/m...

IPTABLES详解(10):IPTABLES自定义链

前提基础: 当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发。 iptables实现防火墙功能的原理是:在数据包经过内核的过程中有五处关键地方,分别是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,称为钩子函数,...