一、maven的 Lifecycle(生命周期)
- 清理(clean):删除以前的编译结果,为重新编译做好准备
- 编译(compile):将Java 源程序编译为字节码文件
- 测试(test):针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性
- 打包(package):将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war包
- 安装(install):在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中
- 部署(deploy):将打包的结果部署到远程仓库或将 war 包部署到服务器上运行
二、打包区别
mvn package
:打包到本项目,一般在项目target
目录下。mvn install
:打包到本地仓库,如果没有设置Maven本地仓库,一般在用户/.m2
目录下。mvn deploy
:打包上传到远程仓库,如:私服nexus等,需要配置pom文件
。
三、打包过程
mvn clean package
依次执行:clean、resources、compile、testResources、testCompile、test、jar(打包)。mvn clean install
依次执行:clean、resources、compile、testResources、testCompile、test、jar(打包)、install。mvn clean deploy
依次执行:clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy。
由上面分析主要区别如下:
- package命令:完成项目编译、单元测试、打包功能,但打包文件未部署到本地Maven仓库和远程Maven仓库。
- install命令:完成项目编译、单元测试、打包功能,同时把打包文件部署到本地Maven仓库,但未部署到远程Maven仓库。
- deploy命令:完成项目编译、单元测试、打包功能,同时把打包文件部署到本地Maven仓库和远程Maven仓库。
本地存放 | 本地仓库存放 | 远程仓库存放 | |
---|---|---|---|
package | √ | × | × |
install | √ | √ | × |
deploy | √ | √ | √ |