前言
前面几章,我们介绍了Maven的安装和使用方法.本章开始,我们介绍下,如何使用Maven来完成我们需要的打包操作.
基本命令
本章我们继续使用maven-train-parent-util
项目进行演示.Maven
基本的操作命令主要有:
- mvn clean
清除依赖的Jar包,重新装载 - mvn package
使用Maven进行打包 - mvn install
将该项目部署到本地仓库内 - mvn build
- mvn test
单元测试
生命周期
Maven 的生命周期主要包括三块:
- Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
- Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
- Site Lifecycle 生成项目报告,站点,发布站点。
Clean 周期
- pre-clean 执行一些需要在clean之前完成的工作
- clean 移除所有上一次构建生成的文件
- post-clean 执行一些需要在clean之后立刻完成的工作
Site周期
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上
Default 周期
了解生命周期对于Maven使用比较重要.Maven的打包周期主要包括如下几个周期
- process-resources
- compile 编译
- process-test-resources 测试
- test-compile 测试
- test 测试
- package 打包
- install 安装
- deploy 部署
我们在运行时例如mvn install
,其会自动执行前面的process-resources -> install
的所以操作.我们有时也会写成mvn package install
但是,有时我们也会跳过某些周期,比如跳过单元测试mvn package -Dmaven.test.skip=true
或mvn package -DskipTests
- 尝鲜(mvn package)
localhost:maven-train-parent-util Sean$ mvn package
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building maven-train-parent-util 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-train-parent-util ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-train-parent-util ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-train-parent-util ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ maven-train-parent-util ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-train-parent-util ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-train-parent-util ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.511 s
[INFO] Finished at: 2019-03-12T20:17:02+08:00
[INFO] Final Memory: 10M/155M
[INFO] ------------------------------------------------------------------------
由上述的log我们可以看到,此次的编译经过了default-resources/default-compile/default-testResources/default-testCompile/default-test/default-jar
这几个周期.
PS: 如果想看到编译的详细过程可以使用mvn -X package
进行查看详细内容.
Reference
[1] maven-train
[2] Maven生命周期详解
[3] (Officical) Introduction to the Build Lifecycle
[4] Maven常用命令
[5] maven跳过单元测试-maven.test.skip和skipTests的区别