maven install、maven clean、project clean

想必当使用eclipse编写程序时,总会遇到一些莫名其妙的问题,比如说提示找不到某个类或方法,明明没有语法错误却说有语法错误,往往这个时候使用project clean即可轻松解决问题。

然而若是你的项目使用maven编译,也会有一个maven clean,这两个有什么具体区别呢,为此我以一个具体项目做了实验,跟踪项目目录下的target文件夹,得出如下结论:

1. maven clean:

maven clean是maven的一个清洁生命周期,目的是删除build目录下的构建输出,体现在文件系统上是删除了Target目录所有文件,包括该目录!(也可以说是删除了maven install后的所有内容)。

2. project clean:

project clean是IDE对已经生成的class文件的删除操作,体现在文件系统上是只删除了Target目录中classes文件夹中所有内容!(也可以说是删除了IDE自动编译的所有内容)。

下面具体讲的是:maven 周期

切记:运行任何一个阶段的时候,它前面的所有阶段都会被运行

Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解,第一,顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我们使用Maven变得简单,相比而言,Ant的每个步骤都要你手工去定义。第二,这个模型是一种标准,在不同的项目中,使用Maven的接口是一样的,这样就不用去仔细理解每个项目的构建了,一般情况下,mvn clean install 这样的命令是通用的。我想,一定是吸收了许多项目的经验,Maven才能定义出如此完善的模型。

Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,初学者容易将Maven的生命周期看成一个整体,其实不然。这三套生命周期分别是:

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

  • Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

  • Site Lifecycle 生成项目报告,站点,发布站点。

我再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

知道了每套生命周期的大概用途和相互关系以后,来逐个详细看一下每套生命周期,Clean和Site相对比较简单,先解释一下。

每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段。有点绕?要知道有--Clean生命周期,也有clean阶段。Clean生命周期一共包含了三个阶段:

  • pre-clean 执行一些需要在clean之前完成的工作
  • clean 移除所有上一次构建生成的文件
  • post-clean 执行一些需要在clean之后立刻完成的工作

mvn clean 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,mvn clean 等同于 mvn pre-clean clean ,如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。

下面看一下Site生命周期的各个阶段:

  • pre-site 执行一些需要在生成站点文档之前完成的工作
  • site 生成项目的站点文档
  • post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy 将生成的站点文档部署到特定的服务器上

这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。

最后,来看一下Maven的最重要的Default生命周期,绝大部分工作都发生在这个生命周期中,这里,我只解释一些比较重要和常用的阶段:

  • validate
  • 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 将包安装至本地仓库,以让其它项目依赖。
  • deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享

记住,运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。

maven install、maven clean、project clean三者的区别相关推荐

  1. 解决Maven打包报错:Failed to clean project: Failed to delete

    一.错误描述 在maven项目开发的过程中,会经常进行开发打包发布新的版本,执行maven的指令如:clean.install等.有时候当我们执行maven的clean指令时,控制台会报Failed ...

  2. 解决Maven打包报错:Failed to clean project: Failed to delete[亲测好用]

    一.错误描述 在maven项目开发的过程中,会经常进行开发打包发布新的版本,执行maven的指令如:clean.install等.有时候当我们执行maven的clean指令时,控制台会报Failed ...

  3. eclipse中的maven build 、maven clean 、 maven install作用

    eclipse中的maven build .maven clean . maven install作用 转载于:https://www.cnblogs.com/ZeGod/p/10483605.htm ...

  4. IntelliJ IDEA教程之如何clean或者install Maven项目

    一.前言 Eclipse中如果我们想clean或者install工程,我们只需要右键工程,然后找到run->Maven install 或者run->Maven clean就可以了,但是I ...

  5. maven打包出错: Failed to clean project: Failed to delete

    maven打包出错: Failed to clean project: Failed to delete 出现这种错误,通常是由于您已启动了另一个tomcat 进程,导致报错,关闭tomcat进程即可 ...

  6. eclipse中的maven build、maven clean、maven install和maven test的区别

    eclipse中的maven build.maven clean.maven install和maven test的区别 https://www.cnblogs.com/Marydon20170307 ...

  7. Java异常处理001:Maven clean package时Failed to clean project: Failed to delete

    Java异常处理001:Maven打包时Failed to clean project: Failed to delete 异常日志: [ERROR] Failed to execute goal o ...

  8. 解决 Maven工程运行报错Failed to clean project: Failed to delete

    如题,在运行maven工程是报"Failed to clean project: Failed to delete"错误,原因是因为之前编译的工程还在运行,无法clean,导致ma ...

  9. Failed to clean project: Failed to delete F:\x\x\target\xx\xxx.jar

    前言: 我们在开发maven项目的时候,会经常开发打包,执行maven的指令:clean.install等.当有的时候我们执行maven的clean指令时,控制台会报如标题的一个错误,这篇文章讲解下怎 ...

最新文章

  1. (1)虚拟机管理——在微软云Azure新门户创建虚拟机
  2. 将js进行到底:node学习10
  3. 2021年辽宁省大学生数学建模竞赛题目A题_智慧停车的运营、管理规划
  4. 网站优化记录-通过命令预编译Asp.net 网站,成功优化到毫秒级别。
  5. 8051系列单片机汇编语言指令速查表(汇编语言的111条指
  6. ARM交叉编译工具arm-linux-gcc安装
  7. 紧急通知!不要在MySQL中使用UTF-8编码!!!
  8. Python编程基础07:选择结构
  9. 2017.3.18 每日小记
  10. 计算机网络7种类型,OSPF中7种类型LSA
  11. kali linux之选择和修改exp与windows后渗透
  12. python深度学习库keras——各类网络层
  13. [项目回顾]基于Redis的在线用户列表解决方案
  14. linux攻防比赛_LINUX 遭到SYN FLOOD攻击 LINUX下SYN攻防战
  15. 区块链 Fisco bcos 智能合约(18)-FISCO BCOS的速度与激情:性能优化方案最全解密
  16. Vue-Router学习笔记-(黑马视频)
  17. python比较四个数字大小写_Python大牛私藏的20个精致代码,短小精悍,用处无穷...
  18. 【渝粤题库】国家开放大学2021春2018货币银行学题目
  19. SharePoint下载大文件失败 异常信息: system.OutOfMemoryException
  20. 梦三显示服务器列表,梦三国开服表_梦三国开服时间表_梦三国最新开服_9K9K手游网...

热门文章

  1. 刺客信条奥德赛多项功能修改器(附游戏攻略)
  2. 对不同的人说不同的话的职场口才分享
  3. 我是佛前的一粒佛珠(请听配乐)
  4. 软件开发版本 Alpha、Beta、RC、GA
  5. 微前端在平台级管理系统中的最佳实践
  6. CDA以API为数据源
  7. python 梳理:安装并开始使用
  8. @微信官方,给我一个小老虎图标
  9. Kotlin学习(4):编码规范
  10. 【模型库】六足球形机器人三维模型+urdf文件