Maven的作用
代码构建工具
从源代码到可以运行的程序文件,需要一系列构建过程
POM(Project object model),通过pom.xml描述了项目的配置
-
依赖管理
- 构建时获取依赖包而不是人工把依赖包放在项目lib下
- 版本控制系统只保存当前项目源码,不保存依赖包,节省空间
- 依赖链管理
- 依赖包版本控制
-
构建流程
- 流程复用
远程仓库 本地仓库(~/.m2/repository)
构建流程(lifecycle-phase-goal)
Maven生命周期由三部分组成,每个周期包含一系列阶段
- default: 项目部署
- validate: 信息校验
- initialize: 创建文件夹等
- 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: 单元测试
- package: 工程打包
- verify: 集成测试
- install: 安装到本地仓库
- deploy: 发布到远程仓库
- clean: 项目清理
- clean: 删除上一次构建的所有文件
- site: 文档生成
同一周期内各个阶段顺序执行
调用install会执行之前的所有阶段
1 | mvn install |
不同部分的阶段可以组合调用
在干净的环境下构建并发布
1 | mvn clean deploy |
阶段只是概念节点,真正执行任务的是一系列插件,一个阶段可以绑定0或多个插件goals
每种打包方式指定一套对各个阶段的插件目标绑定,打包可选jar,war,ear,pom
jar对应的默认绑定
| Phase | Goals |
|---|---|
| process-resources | resources:resources |
| compile | compiler:compile |
| process-test-resources | resources:testTesources |
| test-compile | compiler:testCompile |
| test | surefire:test |
| package | jar:jar |
| install | install:install |
| deploy | deploy:deploy |
插件goals也可以独立于阶段之外,直接调用,用冒号具体指定
1 | mvn clean dependency:copy-dependencies package |
以上都是默认插件,具体到项目,可以在pom文件中引入自定义扩展插件,声明执行阶段和执行目标
build标签下plugin内添加自定义插件
1 | <plugins> |
一分也是爱~
版权声明

This site by Linest is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由Linest创作并维护的博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。