执行mvn compile时,Maven优先使用仓库JAR还是项目源码模块?
Maven依赖优先级:内部模块 vs 私有仓库
- Maven会优先编译并使用项目内部模块的源码,而非私有仓库中的预编译JAR包。
- 核心逻辑:在多模块项目里,Maven会自动识别内部模块的坐标(groupId、artifactId、version),只要依赖声明的坐标和当前项目内的模块完全匹配,就会直接将该模块的源码纳入当前编译流程,跳过远程仓库的查找步骤。
- 例外情况:只有当内部找不到对应坐标的模块,或者依赖声明的版本和内部模块版本不匹配时,Maven才会去私有仓库拉取预编译的JAR包。
- 验证方式:修改内部模块的源码,执行
mvn compile后,检查依赖它的模块是否应用了修改后的逻辑——如果生效,就能确认优先使用内部源码的规则。
内容的提问来源于stack exchange,提问作者binglong li
相关产品推荐
相关产品推荐

