本文介绍如何通过 maven 命令一键导出当前项目的全部(或指定)依赖到指定目录,实现本地仓库的快速补全与离线复用,无需手动下载 jar 或配置远程仓库镜像。
本文介绍如何通过 maven 命令一键导出当前项目的全部(或指定)依赖到指定目录,实现本地仓库的快速补全与离线复用,无需手动下载 jar 或配置远程仓库镜像。
在实际开发中,有时 .m2/repository 目录因清理、迁移或网络限制等原因缺失部分依赖,而重新构建又受限于网络环境(如内网、CI 隔离环境)。此时,并不存在一个“预打包的通用 Maven 仓库下载包”,但可通过 Maven 自带插件高效生成符合标准布局的依赖快照目录——即模拟本地仓库结构,供离线部署、镜像同步或环境初始化使用。
核心方案是使用 maven-dependency-plugin 的 copy-dependencies 目标。该命令会解析当前项目的 pom.xml,递归下载所有已声明的 compile、runtime 等作用域依赖(默认排除 test 和 provided),并按 groupId/artifactId/version/ 标准路径结构复制到目标目录:
mvn dependency:copy-dependencies -DoutputDirectory=./m2-mirror
执行后,./m2-mirror 将生成类似 .m2/repository 的层级结构(例如 ./m2-mirror/org/springframework/spring-core/6.1.12/spring-core-6.1.12.jar),可直接作为轻量级本地仓库挂载使用。
✅ 增强控制建议:
- 若需包含 test 依赖:添加 -DincludeScope=test
- 若仅导出编译期必需依赖(最小化体积):-DincludeScope=compile
- 若需保留 POM 和 checksum 文件(提升兼容性):追加 -DcopyPom=true -DaddParentPoms=true
- 避免重复下载已存在依赖:确保本地 .m2 已缓存基础依赖,插件会自动复用(不强制重拉)
⚠️ 注意事项:
- 该命令不会自动下载插件依赖(如 maven-compiler-plugin),仅处理
中声明的项目依赖; - 输出目录不包含 Maven 元数据(如 _remote.repositories, resolver-status.properties),若需完整仓库语义,建议后续用 mvn deploy:deploy-file 手动安装或使用 Nexus/Artifactory 进行镜像同步;
- 多模块项目需在根 pom.xml 所在目录执行,或添加 -pl :module-name 指定子模块。
综上,mvn dependency:copy-dependencies 是补全、迁移或构建离线 Maven 仓库最轻量、标准且可复现的实践方式——它不依赖第三方服务,完全基于项目定义,精准、可控、零配置。

















