必须从模块结构、主类隔离、运行配置绑定三方面同步控制:创建物理隔离模块并指定独立sdk与路径;为各模块配置专属主类及限定扫描包;通过快捷键或手动方式绑定对应模块的运行配置,确保类路径准确。

要在IntelliJ IDEA中实现同一项目内多个功能模块的代码划分与独立执行,避免启动时相互干扰或依赖冲突,必须打破默认单入口、单运行配置的惯性思维,从模块结构、主类隔离、运行配置绑定三方面同步控制。
创建物理隔离的模块结构
打开已有项目或新建空项目后,右键项目根节点 → New → Module。
在弹出窗口中选择Java(或Spring Boot等对应类型),取消勾选Add module to project——这一步很关键,否则新模块会自动继承父项目的SDK和依赖范围,失去独立性。
手动指定新模块的Module SDK为独立JDK版本(如JDK 17),并在Content root中设置全新路径,例如./modules/report-service,确保与主模块无目录嵌套关系。
【模块名不能含空格或中文】,否则后续Gradle同步或运行配置识别会失败;IDEA内部用连字符(-)或驼峰命名更稳妥。
为每个模块配置专属主类与启动逻辑
在新模块的src/main/java下新建包,例如com.example.report,再创建ReportApplication.java。
该类必须使用public static void main(String[] args)入口,且不依赖其他模块的Spring上下文或@Component扫描路径——若误加@SpringBootApplication并启用全局扫描,可能意外加载主模块的Controller导致端口冲突。
纯Java模块可直接写逻辑:System.out.println("Report service started.");;Spring Boot模块则需显式限定扫描包:@SpringBootApplication(scanBasePackages = "com.example.report")。
这一步做完后,模块即具备独立编译和运行能力,无需启动整个项目。
绑定独立运行配置
方法一:快捷绑定
在刚创建的主类编辑器中,将光标停在main方法内部 → 按Ctrl+Shift+F10(Windows/Linux)或Ctrl+^+R(macOS)→ IDEA自动生成以类名为名的运行配置,例如ReportApplication。
方法二:手动配置
点击顶部菜单Run → Edit Configurations… → 左上角+ → 选择Application → 在Main class中点击右侧...按钮,精准定位到该模块下的主类(注意不是项目级类路径)。
务必检查Use classpath of module下拉框,选择对应模块名(如report-service),而非默认的root-project——选错会导致类找不到或加载错误的配置文件。
配置完成后,可在右上角运行配置下拉菜单中看到多个并列选项,每个对应一个模块的主类,点击即可单独启动。
验证模块间真正隔离
第一步:在主模块的application.properties中设server.port=8080,在报告模块中设server.port=8081,保存后分别运行两个配置。
第二步:打开浏览器访问http://localhost:8080/health和http://localhost:8081/health,确认两者均返回200且响应体内容不同。
第三步:关闭报告模块进程,刷新:8081页面应显示连接拒绝,而:8080仍正常——证明无进程级耦合。
此时你已获得可独立编译、独立运行、独立调试、独立打包的模块单元,后续可按需导出为jar或部署至不同服务器。











