在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

相关推荐
卓越小Y4 分钟前
配置jellyfin docker 硬件加速
java·spring cloud·docker
白萝卜弟弟7 分钟前
【JAVA】正则表达式中的捕获组和非捕获组
java·正则表达式
袁庭新28 分钟前
LuaRocks如何安装数据库驱动?
java·数据库·redis·lua·luarocks·袁庭新
hummhumm36 分钟前
第 10 章 - Go语言字符串操作
java·后端·python·sql·算法·golang·database
nukix1 小时前
Mac Java 使用 tesseract 进行 ORC 识别
java·开发语言·macos·orc
月光光心慌慌。1 小时前
新日撸java三百行` 新手小白java学习记录 `Day1
java
蘑菇丁1 小时前
ranger-kms安装
java·ide·eclipse
XiaoLeisj1 小时前
【JavaEE初阶 — 多线程】内存可见性问题 & volatile
java·开发语言·java-ee
weixin_462428471 小时前
使用 Caffeine 缓存并在业务方法上通过注解实现每3到5秒更新缓存
java·缓存
程序媛小果1 小时前
基于java+SpringBoot+Vue的桂林旅游景点导游平台设计与实现
java·vue.js·spring boot