序言
maven
同学们在开发中 中clean package install 这个大多数人在项目实际开发中会用到,deploy 可能是leader 或者写框架的同学才用到。比如一个功能写完 大家可能跟我一样用idea 写完代码然后Run项目,但是有时候项目不行,然后就一顿操作 clean、package、install。有没有仔细的想过 为啥我们要这么操作,为啥操作后能代码就正常运行了?很多同学肯定与运维有些交集,你偶尔也能看到他们手动帮你部署测试环境,或者看到自动化部署中的配置mvn clean package, 这应该是运维用的是最多的,他们之间有什么区别?
下面我就跟同学们一起好好说道一下。
作用
每个事物都有生命周期,maven操作也不例外,我们先讲一下生命周期。
第一阶段(Clean Lifecycle)在进行真正的构建之前进行一些处理工作 ,指令 mvn clean
。
第二阶段(Default Lifecycle)构建的核心部分,编译,测试,打包,部署等 ,指令 mvn validate,compile,test,package,install
deploy。
第三阶段(Default Lifecycle)生成项目报告,站点,发布站点 这一点对于大多数同学来说用的很少。
我们今天主要看我们经常用的4个指令
- mvn
clean
: 清除本地本项目的target下内容。 - mvn
package
:打包(jar等)到本项目的target下 。 - mvn
install
:把target下打的包(jar等)安装到本地仓库,可以供其他项目使用。 - mvn
deploy
:将打包的文件发布到远程仓库(所谓的私服),提供其他人员进行下载依赖。
坑
1.用mvn install后,新改的内容不生效,一定要后来使用mvn clean install 才生效。
maven在执行一个生命周期的命令的是时候将会执行之前的所有生命周期操作,比如执行mvn install,会执行前面一系列的动作包括 compile , package , test 等。而执行mvn package 会调用 maven-jar-plugin 这个插件进行打包,理论上来讲不做mvn clean得到的jar包应该是最新的,然而在打包结束后修改了代码内容,导致打出来的jar包没有更新,从而没有生效,所以使用mvn clean install对target文件清除后再进行打包。