maven生命周期和插件
1 生命周期
maven对项目构建的生命周期进行抽象和统一,总结出项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等构建步骤。各构建步骤的具体实现由插件来完成,每一个构建过程绑定一个或多个插件行为,maven为大多数构建过程绑定了默认插件。用户也可根据需要配置或编写自定义插件。
maven有三套独立的生命周期,分别为clean、default、site。
1.1 clean生命周期
clean生命周期的目的是清理项目,包含三个阶段:
1)pre-clean:执行一些清理前需要完成的工作
2)clean: 清理上一次构建生成的文件
3)post-clean:执行一些清理后需要完成的工作
1.2 default生命周期
default生命周期定义了真正构建时所需要执行的所有步骤。
1)validate
2) initialize
3) generate-sources
4) process-sources 处理项目主资源文件。
5)generate-resources
6) process-resources
7) compile 编译项目的主源码
8)process-classes
9) generate-test-sources
10) process-test-sources 处理项目测试资源文件
11) generate-test-resources
12) process-test-resources
13) test-compile 编译项目的测试代码
14)process-test-classes
15) test 使用单元测试框架运行测试
16)prepare-package
17) package
18) pre-intergration-test
19) intergration-test
20) post-intergration-test
21) verify
22) install 将包安装到maven本地仓库
23) deploy 将包复制到远程仓库
1.3 site生命周期
site生命周期的目的是建立和发布站点
1.4 命令行与生命周期
- mvn clean 调用clean生命周期的clean阶段,实际执行阶段为clean生命周期的pre-clean和clean阶段
- mvn test 调用default生命周期的test阶段,实际执行的阶段为default生命周期的validate、initalize等,直到test的所有阶段
2 插件
一个插件往往能够完成多个功能,每一个功能对应一个插件目标。如maven-dependency-plugin有十多个目标,dependency:analyze(项目依赖分析)、dependency:tree(依赖树)、dependency:list(依赖列表)。这是一种通用写法,冒号前面是插件前缀,冒号后面是该插件的目标。类似还可以写出compiler:compile(maven-compiler-plugin)和surefire:test(maven-surefire-plugin)
3 maven命令
- 使用maven-help-plugin插件 mvn help:describe -Dplugin=org.apache.maven.plugin:maven-compiler-plugin:2.1 这里执行的是maven-help-plugin插件的describe目标。在参数plugin中输入需要描述插件的groupId、artifactId和version。输出结果包括该插件的坐标、目标前缀和目标等。
- mvn install -Dmaven.test.skip=true 执行install,跳过测试 或者 mvn install -DskipTests
- -DskipTests 仅跳过测试运行,测试代码会进行编译
- -Dmaven.test.skip=true 跳过测试代码编译和测试运行 maven.test.skip同时控制maven-compiler-plugin和maven-surefire-plugin这两个插件的行为
- mvn -h 显示maven的命令帮助, 可看到mvn [options] [<goal(s)>] [<phase(s)>]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话