0

0

如何在Java中搭建多模块项目环境_Maven多模块环境搭建思路

php中文网

php中文网

发布时间:2026-01-12 13:44:02

|

630人浏览过

|

来源于php中文网

原创

Maven多模块项目正确结构是:父模块packaging必须为pom,子模块路径在父pom的中显式声明且目录需在父模块下;子模块通过继承版本与插件,依赖需在各自pom中声明才能生效。

如何在java中搭建多模块项目环境_maven多模块环境搭建思路

什么是Maven多模块项目的正确结构

多模块项目不是把多个 pom.xml 放进不同文件夹就完事。核心是:一个父模块(pom packaging 为 pom)统一管理子模块的版本、插件和依赖,子模块必须在父模块的 中显式声明。

常见错误是子模块目录不在父模块下,或父模块的 packaging 写成 jar —— 这会导致 Maven 完全忽略 配置,子模块压根不参与构建。

  • 父模块根目录下必须有 pom.xml,且 pom
  • 所有子模块路径写在父 pom.xml 里,如:user-service
  • 子模块的 必须指向父模块的 groupId + artifactId + version,不能只写坐标不写
  • 推荐将 显式设为空:,避免 Maven 错误向上查找

子模块如何继承父模块的依赖与插件

父模块的 只做**版本仲裁**,不引入实际依赖;子模块需在自己 pom.xml 中声明 才会真正引入——这点极易混淆,导致编译报 ClassNotFoundException

插件同理: 在父模块中统一配置插件版本和默认参数,但子模块必须在自己的 中显式写出插件坐标,才会生效。

立即学习Java免费学习笔记(深入)”;

  • 父模块用 管理 Spring Boot 版本:spring-boot-dependencies,子模块只需写 org.springframework.bootspring-boot-starter-web 即可
  • 若子模块需要跳过测试,应在自己 pom.xml 中写:org.apache.maven.pluginsmaven-surefire-plugintrue
  • 避免在父模块的 中直接写依赖(除非是所有子模块共用的 API 模块),否则会强制所有子模块都引入该依赖

模块间依赖怎么写才不会循环或失败

子模块之间依赖必须用 compile 范围(默认),且依赖的模块必须已安装到本地仓库或在同一构建中被先编译。最常踩的坑是:A 模块依赖 B,但 B 尚未构建,又没执行 mvn install,直接运行 A 会提示 Could not find artifact

MakeSong
MakeSong

AI音乐生成,生成高质量音乐,仅需30秒的时间

下载

更隐蔽的问题是“隐式传递依赖”:B 模块依赖了 C 的某个旧版 jar,而 A 模块又直接依赖新版 C —— 此时 Maven 默认按“第一声明优先”策略选旧版,导致 A 运行时报 NoSuchMethodError

  • 模块间依赖写法:com.examplecommon-utils${project.version},用 ${project.version} 确保版本同步
  • 禁止用 system 范围或 systemPath 引入 jar,这会让模块无法被其他机器构建
  • 检查循环依赖:用 mvn dependency:tree -Dverbose 查看依赖链,若出现 A → B → A,则必须拆分或引入中间接口模块

IDEA 中刷新/导入多模块项目的关键动作

IDEA 不会自动识别父子关系,单纯打开父目录 ≠ 正确导入多模块项目。常见现象是:父 pom.xml 显示 “Maven project”,但子模块只是普通文件夹,没有小蓝标,也无法右键运行 mvn clean compile

根本原因是 IDEA 没触发 Maven import 流程,或缓存了旧配置。此时靠“Reload project”按钮往往无效,必须重置上下文。

  • 关闭项目后,彻底删除项目根目录下的 .idea 文件夹和所有 *.iml 文件
  • 重新打开父模块根目录,选择 “Open as Project” → 勾选 “Import project from external model” → 选 Maven
  • 确保勾选 “Search for projects recursively”,否则子模块不会被发现
  • 导入完成后,在 Maven 工具窗口检查是否列出所有子模块,每个模块节点下应有 cleancompile 等生命周期命令


    4.0.0

    com.example
    parent-project
    1.0.0-SNAPSHOT
    pom

    
        user-service
        order-service
        common-utils
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                3.2.0
                pom
                import
            
        
    

模块名拼错、relativePath 指向偏差、IDE 缓存残留——这三个点卡住的人最多。别急着查文档,先确认父 pom 是否真被识别为 packaging=pom,再看 IDEA 的 Maven 面板有没有列出全部子模块。别的都可以调,这个结构对不上,后面全是白忙。

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

831

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

737

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

733

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

398

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16925

2023.08.03

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

6

2026.01.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.4万人学习

C# 教程
C# 教程

共94课时 | 6.5万人学习

Java 教程
Java 教程

共578课时 | 45.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号