前言
这次来说说maven这玩意,同样还是那句话,maven对我而言只是工具,一些常规操作已经足够了,有空有兴趣才会去深入研究它。接下来会记录下自己使用maven时需要注意和理解的地方,至于那些基本概念和环境配置的问题,相信大家都懂。
仓库
maven仓库可分为本地仓库和远程仓库。
如果公司自己有搭建maven私服,那么还可以细分为本地仓库、私服仓库(内网)、中央仓库(外网)。
私服是指公司内网搭建的maven仓库,可供公司内部人员使用。
pom.xml里依赖jar包的寻找流程:
- 本地仓库找,找到直接用,不需要联网。
- 本地找不到,私服仓库找,找到就下载到本地,以供下次直接使用。
- 私服找不到,会直接去中央仓库找,然后下载到私服、本地,以供下次直接使用。
没私服的话,本地仓库找不到就直接去中央仓库找。
构建过程
maven构建过程的各个环节,代表maven工作的某个阶段
- 清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备。
- 编译:将Java源程序编译成class字节码。
- 测试:自动测试,自动调用junit程序。
- 报告:测试程序执行的结果。
- 打包:动态Web工程打war包,java工程打jar包。
- 安装:将打包得到的文件复制到仓库中指定位置。
- 发布:拷贝最终的工程包到远程仓库,以供其他开发人员使用。
maven实际工作时,顺序不一定从上到下。几个阶段是重要阶段,并不是maven的全部阶段。具体执行什么阶段,执行顺序是啥,依赖于它的生命周期。
有些文章会说到最后一个构建阶段:部署->将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其运行。 这需要在tomcat这种servlet容器配置点什么,然后再执行maven相关命令,war包就会自动部署到容器下。不过我现在开发基本都是在SpringBoot环境下,war包部署就不存在了。有兴趣再去熟悉熟悉。
生命周期
三套相互独立的生命周期,互不影响,定义了构建环节的执行顺序。
- clean生命周期:构建之前进行一些清理工作。
- default生命周期:常用且核心,包括编译、测试、打包、安装、发布等
- site生命周期:生成项目报告、站点。发布站点。(我没怎么用过....)
依赖上述的构建过程和生命周期,maven执行任何一个阶段的时候,它前面的所有阶段都会执行。
例如我们执行 mvn install 的时候,代码会被编译,测试,打包。但不会clean(清理),因为install和clean是在不同的生命周期里,但我们可以结合使用,如:mvn clean install
idea内置maven界面也说明这一点,点击生命周期的某一个阶段,maven会把前面到此阶段都执行下,不信你可以试试。
maven命令
除了通过idea的界面操作maven,我们也可以手打命令,不然在linux系统上你怎么搞?
- 清理 mvn clean
- 编译 mvn compile
- 测试 mvn test
- 打包 mvn package
- 安装 mvn install
- 发布 mvn deploy
执行maven构建命令,必须在pom.xml所在的目录
根据maven生命周期,当你执行mvn install时, compile、test、package、intall会依次执行,mvn deploy同理。
实际开发中,我都是直接敲命令编译打包安装,用得最多的是
mvn clean install -Dmaven.test.skip=true -U
加上clean是先把文件清理干净,