当前位置: 首页 > news >正文

Maven学习

Maven的生命周期

生命周期类型阶段名称阶段描述执行示例(触发该阶段及之前所有阶段)
cleanpre-clean执行清理前的准备工作(如备份文件)mvn pre-clean
clean删除上一次构建生成的文件(如 target 目录)mvn clean
post-clean执行清理后的收尾工作(如删除备份)mvn post-clean
defaultvalidate验证项目配置是否正确,确保必要信息(如依赖、参数)完整有效mvn validate
compile编译项目的主源代码(将.java 文件编译为.class 文件)mvn compile
test使用单元测试框架(如 JUnit)执行编译后的测试代码,不依赖打包或部署mvn test
package将编译后的代码打包为可分发格式(如 JAR、WAR、EAR 等)mvn package
verify检查集成测试结果,确保符合质量标准(如代码覆盖率、测试通过率)mvn verify
install将打包后的文件安装到本地 Maven 仓库(默认路径:~/.m2/repository),供本地其他项目依赖mvn install
deploy将最终包上传到远程 Maven 仓库,供团队其他开发者或项目共享mvn deploy
sitepre-site生成站点文档前的准备工作(如收集文档素材)mvn pre-site
site生成项目站点文档(如 API 文档、项目说明等)mvn site
post-site生成站点后的收尾工作(如校验文档完整性)mvn post-site
site-deploy将生成的站点文档部署到指定服务器(如 HTTP 服务器)供访问mvn site-deploy

说明:

  1. 表格中仅列出各生命周期的核心阶段,实际每个生命周期包含更多细分阶段(如defaultinitializeprocess-resources等),但日常使用中核心阶段已能满足大部分需求。
  2. 执行任何阶段时,Maven 会自动按顺序执行该生命周期中所有在它之前的阶段(例如执行mvn install会触发validatecompiletest→...→install的完整流程)。
  3. 三大生命周期相互独立,例如执行mvn clean package会先执行clean生命周期的pre-cleanclean,再执行default生命周期到package的所有阶段。

 Maven命令参数

参数说明表

参数作用说明
-DskipTests跳过测试执行
-Dmaven.test.skip=true跳过测试编译和执行
-P<profile>激活指定的 Profile
-T <n>并行构建线程数(-T 4 或 -T 1C
-pl <module>指定构建的模块
-am同时构建依赖模块
-o离线模式
-X开启 DEBUG 日志
-U强制更新 SNAPSHOT 依赖
-f <path>指定 POM 文件路径
-s <path>指定 settings.xml 路径

💡 提示:

  • 参数顺序通常不影响执行(如 mvn -DskipTests clean install 有效)。

  • 使用 mvn help:effective-pom 可查看合并参数后的实际 POM 配置。

常见作用域(Scope)对比:

Scope生效阶段是否打入构建产物典型用例
test仅测试阶段(编译/运行测试)❌ 否JUnit, Mockito
compile编译、测试、运行(默认值)✅ 是Spring Core, Apache Commons
provided编译和测试阶段❌ 否Servlet API(由容器提供)
runtime测试和运行阶段✅ 是JDBC 驱动(如 MySQL Connector)
system同 provided,但需显式指定路径❌ 否本地特殊 JAR 文件

分模块开发和设计

1. 02工程需要使用domain包下的实体类但是没有

2.domain包在03工程中

3.只需要在02工程中的POM文件中引入03工程的依赖坐标(该坐标在03工程的POM文件下可以找到)

4.但是此时你maven编译02工程会报错(03工程的依赖找不到)(因为本地仓库没有03工程依赖)

5.对03工程进行install可以看到03工程的依赖可以安装到了本地仓库,此时可以运行02工程了

依赖管理

依赖具有传递性

 依赖的冲突性

依赖因为有传递性,所以会导致依赖冲突的问题(依赖多个版本的依赖,不确定用哪个)

可选依赖

可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具备依赖的传递性

 排除依赖

排除依赖是隐藏当前资源对应的依赖关系

聚合 

为什么需要聚合

例如:依赖关系如下

当pojo包改变时可能会不兼容其他引用他的工程这个这个时候需要加一个聚合工程(maven

的根目录)

步骤

继承 

在子工程中配置继承的父工程,就可以获取父工程的依赖(简化配置) 

 步骤 

聚合和继承的区别

 属性

 用于定义变量和统一管理依赖的版本

资源文件引用属性 

其他属性 

 

 版本管理

多环境开发

 实现这种效果

第一步

 在聚合工程的POM文件中

profiles><profile><id>dev</id><properties><profileActive>dev</profileActive></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>prod</id><properties><profileActive>prod</profileActive></properties></profile><profile><id>qa</id><properties><profileActive>qa</profileActive></properties></profile></profiles>

 第二步:我们有很多配置文件

默认是在application.yml生效

里面有标签为active指定激活那一份配置文件

由聚合工程的pom文件动态填充

spring:profiles:active: '@profileActive@'

也可以在这里配置

 

跳过测试 

 私服

私服仓库分类 

 

资源上传和下载

 在setting.xml中配置上传的权限和路径

 临时版本:对应依赖的版本后缀为SNAPSHOT(快照版本)

发布版本:对应依赖的版本后缀为RELEASE(发布版本)

在工程里面配置上传下载的路径

私服中配置连接中央仓库的镜像

在名为maven-central仓库中配置

 步骤总结

常用的maven命令 

http://www.xdnf.cn/news/1175941.html

相关文章:

  • 服务器版本信息泄露-iis返回包暴露服务器版本信息
  • 《汇编语言:基于X86处理器》第9章 复习题和练习
  • C++:list(1)list的使用
  • 性能优化:Vue 3 `v-memo` 指令详解
  • 四、cv::Mat的介绍和使用
  • FreeRTOS学习笔记之调度机制
  • Linux C: 函数
  • 2026 拼多多秋招内推码(提前批)
  • 2025年电赛--电源题赛前押题
  • 19.动态路由协议基础
  • 1. 一份“从 0 到 1” 的 WSL(Windows Subsystem for Linux)速查手册
  • 自定义类型:结构体,联合和枚举
  • (Arxiv-2025)OVIS-U1技术报告
  • 动态路由协议基础
  • vmware分配了ubuntu空间但是ubuntu没有获取
  • 226.翻转二叉树
  • 排版套料—判断矩形能否放入多边形内——cad c# 二次开发实现
  • 以 “有机” 重构增长:云集从电商平台到健康生活社区的跃迁
  • MySQL深度理解-深入理解MySQL索引底层数据结构与算法
  • Android用户鉴权实现方案深度分析
  • C# 值类型与引用类型的储存方式_堆栈_
  • 【网络工程师软考版】网络互联设备、网络层协议IP和ICMP
  • Windows 编程辅助技能:速览定义
  • 基于Springboot的中药商城管理系统/基于javaweb的中药材销售系统
  • mac测试ollama llamaindex
  • Ubuntu22.04.5 LTS安装与使用Docker
  • 最长递增子序列(LIS)问题详解
  • dev软件开发阶段的环境代号
  • 9、STM32的启动过程
  • 【STM32】FreeRTOS的移植(一)(详细流程)