Maven dependency:copy-dependencies如何排除本地模块依赖?
问题分析与解决方案
为什么-DexcludeGroupIds参数没起作用?
dependency:copy-dependencies的excludeGroupIds参数仅控制最终复制哪些依赖文件,不会跳过Maven的依赖解析流程。在执行该插件目标前,Maven会先校验所有项目依赖的可访问性——你的shared.id:common是本地模块,若未安装到本地Maven仓库,Maven会默认去远程仓库查找,找不到就抛出依赖无法解析的错误。
解决方法
方法1:先安装本地模块到仓库
先在项目根目录执行安装命令,将common模块打包并安装到本地Maven仓库:
mvn install -DskipTests
之后再执行你的依赖复制命令:
mvn dependency:copy-dependencies -DexcludeGroupIds=shared.id -pl submodule
方法2:结合多模块构建参数一次性完成
在根目录执行命令时,加上-pl指定子模块,-am自动构建该子模块的所有依赖模块(即common模块),这样Maven会先编译构建common模块,再执行依赖复制:
mvn dependency:copy-dependencies -DexcludeGroupIds=shared.id -pl submodule -am
方法3:配置插件参数忽略缺失的本地依赖(不推荐)
如果不想构建common模块,可以添加-DignoreMissingArtifacts=true参数跳过缺失依赖的检查,但这可能导致其他真实缺失的外部依赖被忽略,仅适合临时应急使用:
mvn dependency:copy-dependencies -DexcludeGroupIds=shared.id -DignoreMissingArtifacts=true -pl submodule
内容的提问来源于stack exchange,提问作者nsandersen
相关产品推荐
相关产品推荐

