You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven子模块module_1无法识别依赖的shared模块类,如何解决?

修复Maven多模块依赖找不到类的问题

兄弟,你的问题其实出在两个关键配置错误上,咱们一步步来解决:

1. 核心问题分析

你的shared模块明明是包含Java代码的业务模块,但却配置成了<packaging>pom</packaging>,这会让Maven把它当成纯聚合/父模块,不会编译生成包含类文件的jar包;同时module_1依赖shared时不仅指定了错误的<type>pom</type>,连groupId都写错了,这俩问题叠加起来,自然找不到shared里的类。

2. 具体修复步骤

第一步:修改shared模块的pom.xml

把shared的打包方式改成jar(因为它要提供编译后的类给其他模块使用),同时可以去掉手动指定的version,直接继承父模块的版本:

<parent>
    <groupId>root</groupId>
    <artifactId>root</artifactId>
    <version>0.0.1</version>
</parent>
<artifactId>shared</artifactId>
<!-- 移除手动写的version,自动继承父模块版本 -->
<packaging>jar</packaging> <!-- 将pom改为jar -->
<name>shared</name>
<description>shared</description>

第二步:修正module_1里的shared依赖

首先,shared模块的groupId是继承父模块的root,不是shared;其次删掉<type>pom</type>(Maven默认依赖类型就是jar),同时用父模块版本变量避免硬编码:

<dependencies>
    <dependency>
        <groupId>root</groupId> <!-- 这里改为root,不是shared -->
        <artifactId>shared</artifactId>
        <version>${project.parent.version}</version> <!-- 继承父模块版本,无需硬写 -->
        <scope>compile</scope>
        <!-- 删除<type>pom</type>这一行 -->
    </dependency>
</dependencies>

第三步:重新构建项目

回到Root目录下,执行清理+安装命令,确保shared模块先被编译并安装到本地仓库,这样module_1就能正常找到它的类了:

mvn clean install

额外优化建议

为了后续版本管理更省心,建议把Root父模块的version改成0.0.1-SNAPSHOT,这样所有子模块都会自动继承这个快照版本,不用手动维护每个模块的version,减少出错概率。

内容的提问来源于stack exchange,提问作者gstackoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:27:55