Maven多模块项目编译子模块时找不到另一子模块本地POM文件如何解决
问题修复方案
核心问题原因
- 你的common和service1两个子模块未声明继承父模块,Maven无法识别同项目内的模块依赖关系,单独构建service1时会直接从远程中央仓库拉取common依赖,而非优先使用本地项目的common模块
- 执行
mvn clean install时未正确将common模块的jar包安装到本地Maven仓库,导致依赖解析失败
具体修复步骤
步骤1:为两个子模块添加父模块继承声明
在common和service1的pom.xml中,<modelVersion>标签后添加父模块声明:
<parent> <groupId>project</groupId> <artifactId>quotations</artifactId> <version>1.0</version> <!-- 指向父模块pom的相对路径 --> <relativePath>../pom.xml</relativePath> </parent>
如果你要保留子模块service-ad的groupId,无需删除子模块的groupId配置,继承配置不影响自定义groupId
步骤2:将common模块安装到本地Maven仓库
进入项目根目录(父pom所在目录),执行命令:mvn clean install -pl common -U
执行完成后检查本地Maven仓库的service/ad/common/1.0路径下,确认存在common-1.0.jar和common-1.0.pom文件
步骤3:调整service1构建命令
后续构建service1时,添加-am(同时构建依赖模块)参数,无需手动提前安装common模块,命令如下:mvn compile exec:java -pl service1 -am -U
可选优化
common模块不需要打包为可执行jar的话,可以删除common pom中maven-assembly-plugin的相关配置,避免因为未配置main.class导致的打包警告。
内容的提问来源于stack exchange,提问作者f0body
相关产品推荐
相关产品推荐

