在IntelliJ IDEA中创建带子模块的SpringBoot工程

前言

在项目开发中,一个工程往往有若干子工程或模块,所以主工程一般是一个容器,本文介绍在IntelliJ IDEA中创建带多模块的SpringBoot工程的详细步骤。

1、首先打开IntellJ IDEA(以下简称IDEA),创建一个新项目。假定新项目的名称为openjweb-cloud,组ID为org.openjweb,主工程的artifactId为openjweb-cloud-boot。

打开IDEA开发工具,选择菜单File...New....Project,见下图:

弹出下面的界面:

左侧选择Spring Initializr,右侧Name:项目名自己随便起(openjweb-cloud),Location选择项目路径,建议路径中无中文无空格。Language:Java,Type选Maven,Group组ID自己可以按照产品域名设置,例如org.openjweb,ArtifactId为项目的ID,比如openjweb-cloud作为项目ID,Package name为JAVA程序的包路径名字,一般为产品域名.主工程名,例如org.openjweb,Project SDK ,我建议选择JDK8,目前生产环境主要是JDK1.8的,JAVA 版本号选择23 (没有8版本的,所以先选择23 ,后面再改),然后点Next按钮。见下面的界面:

SpringBoot版本暂时不用3系列的,但目前IDEA里只有3系列的,暂时选择3.3.5,后面再改。

上面的界面中点Finish。IDEA创建了一个新的工程,见下图:

2、创建Module

在创建Module之前,需要进行一些配置:

(1)因为主工程一般做容器用的。所以需要把主工程的packageing设置为pom,SpringBoot版本设置为2.7.18(具体根据项目需求)。修改pom.xml:

另外,点击右侧的Maven:

打开下面的界面:

注意右上角的齿轮,点开齿轮:

第一个Group Module菜单没勾选,把这个勾选上,这样创建模块的时候会在一个工程里。

接下来创建模块,现在创建一个openjweb-common模块,主要用于实现无框架依赖的底层工具类,例如字符串处理、文件处理工具类。具体操作步骤:

(1)鼠标选中openjweb-cloud项目,然后顶部菜单,File...New...Module:

点Next,然后点Finish。创建的模块结构见下图:

此时右侧的openjweb-common模块还没在openjweb-cloud 下面,手工做如下配置:

打开openjweb-common模块的pom.xml,复制主工程的:

复制代码
<groupId>org.openjweb</groupId>
<artifactId>openjweb-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>

放在<parent></parent>里,把原来的parent里的内容删掉:

改后是这样的:

复制代码
<parent>
    <groupId>org.openjweb</groupId>
    <artifactId>openjweb-cloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

主工程目前没有 module,增加:

复制代码
<modules>
    <module>openjweb-common</module>
</modules>

然后点下图的刷新图标,刷新后,模块openjweb-common就挂到主工程下面了:

接下来点击MAVEN窗口的package打包检查是否能正常打包:

打包成功。

另外再选中子模块的application,点绿色的箭头运行看能否正常启动:

提示:

需要打开File--Settings配置下模块的JDK版本:

将openjweb-common的23改为1.8,保存后,在maven界面上需要点下

然后再运行,运行成功界面见下图:

因为平时做项目大多是别人搭建好的工程,所以不少人没有从零搭建过,会遇到不少问题。

另外因为openjweb-common是基础类库,不需要SpringBoot运行,后面增加业务系统模块可删除掉 OpenjwebCommonApplication.java

相关推荐
考虑考虑4 小时前
JDK26中的List.ofLazy()
java·后端·java ee
小蒜学长4 小时前
基于SpringBoot的公寓报修管理系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·公寓报修管理系统·多角色协同
for_ever_love__4 小时前
MySQL 主从复制讲透:binlog 原理、搭建步骤与读写分离
java·数据库·mysql·binlog·读写分离·原理·主从复制
小π军6 小时前
操作系统面试题
java·linux·服务器
倔强的石头1067 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
Shaoshing7 小时前
ThreadLocal
java·jvm·threadlocal
写后端的胖头鱼7 小时前
一文详解CAS
java·jvm·spring·cas·乐观锁·自旋
鱼宵7 小时前
Spring AI 提示词模板:{变量} 参数化 + few-shot,一条提示词反复用
java·人工智能·spring·few-shot·提示词工程·springai
蜗牛互联网7 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python