如何借助Idea创建多模块的SpringBoot项目
作者:mmseoamin日期:2024-04-30

目录

    • 1.1、前言
    • 1.2、开发环境
    • 1.3、项目多模块结构
    • 1.4、新建父工程
    • 1.5、创建子模块
    • 1.6、编辑父工程的pom.xml文件

      1.1、前言

              springmvc项目,一般会把项目分成多个包:controler、service、dao、utl等,但是随着项目的复杂性提高,想复用其他一个模块的话,因为是包的形式,剥离出来会比较困难,耦合性有点强,常用的方法就是复制代码修改,但是这样会做很多无用功与增加出错几率。

              springboot多模块简单来说,就是把按包分模块的模式,借助maven升级到jar的方式,抽象性更加强了,假如iar再升级到到war或者多个集合jar,就成微服务了,在多模块jar模式下可以将某个jar拿出来对外共用,能大大提高代码复用率与开发效率。同时也能方便项目中所依赖的第三方Jar包的版本的统一管理。

      1.2、开发环境

              本文将采用Java语言,基于JDK17基础环境、Maven、Idea等工具进行开发实现。JDK环境的安装请参考JDK安装部署。具体如下:

      环境名称版本号
      JDK17.0.7
      Maven3.6.3
      Idea2019.3.5
      Spring Boot3.2.4

      1.3、项目多模块结构

              本文通过构建一个包含5个子模块的项目,来演示 SpringBoot 在 Maven 环境的多模块构建过程。具体如下图所示:

      如何借助Idea创建多模块的SpringBoot项目,图片1,第1张

      • Common模块:该模块主要是通用工具类、错误码、公共数据对象管理等;
      • API模块:主要是外部依赖服务管理;
      • Web模块:负责接收Http/RPC请求、路由到指定Controller;
      • Service模块:负责业务逻辑处理;
      • DAO模块:负责数据访问;

        1.4、新建父工程

                通过Spring Lnitalizer创建父工程,并设置响应的参数即可,具体操作步骤如下。

                (1)File ->New Project ,在参数页面设置JDK版本,然后点击下一步即可,具体如下:

        如何借助Idea创建多模块的SpringBoot项目,图片2,第2张

                (2)在项目元数据参数页面根据实际需要设置对应的参数即可,具体如下:

        如何借助Idea创建多模块的SpringBoot项目,图片3,第3张

                (3)在项目依赖参数页面根据实际需要设置对应的参数即可,具体如下:

        如何借助Idea创建多模块的SpringBoot项目,图片4,第4张

                (4)在项目位置参数页面根据实际需要设置对应的参数即可,具体如下:

        如何借助Idea创建多模块的SpringBoot项目,图片5,第5张

                (5)创建好后删除刚创建工程里不需要的文件, 只保留:.idea 文件夹 、项目 pom 文件、以及一个 *.iml 文件,删除前的项目结构如下:

        如何借助Idea创建多模块的SpringBoot项目,图片6,第6张

                删除后的项目结构如下:

        如何借助Idea创建多模块的SpringBoot项目,图片7,第7张

        1.5、创建子模块

                (1)右键点击父工程,选择 New -> Module… 创建子模块。这里依次创建 common、api、dao、service 和 web 共 5 个模块。

        注意:除了 web 子模块创建时选择添加 Spring Web 依赖(当然也可以创建时不添加,等后面再手动编辑 pom.xml 文件添加),其他模块暂时不添加依赖。

                在新建模块参数页面根据实际情况设置参数即可,具体如下:

        如何借助Idea创建多模块的SpringBoot项目,图片8,第8张

        如何借助Idea创建多模块的SpringBoot项目,图片9,第9张

        如何借助Idea创建多模块的SpringBoot项目,图片10,第10张

                (2)重复上述步骤新建common、api、service 等其他模块。

                (3)将所有子模块的 mvnw、mvnw.cmd 文件及 .mvn 文件夹全部删除,具体如下:

        如何借助Idea创建多模块的SpringBoot项目,图片11,第11张

                (4)参照新建父工程的方式新建web模块。

                (5)对于 src 里的内容,只保留 web 的启动类和配置文件,其他子模块的的启动类和配置文件都删除。

        1.6、编辑父工程的pom.xml文件

                将父工程 pom.xml 文件修改成如下内容,里面声明该父工程包含的子模块,同时抽取统一的配置信息和依赖版本控制,这样可以方便子 pom 直接引用,简化子 pom 的配置。

        1、多模块项目中,父模块打包类型必须是 pom。

        2、因为开发框架是 spring boot,父模块默认继承 spring-boot-starter-parent,因此可以删除 spring-boot-starter 和 spring-boot-starter-test 依赖(祖先已经包含了)

                父工程pom.xml如下:

        
        
            4.0.0
            pom
            
                common
                api
                dao
                service
                web
            
            
                org.springframework.boot
                spring-boot-starter-parent
                3.2.4
                 
            
            cn.cerc.smart
            design
            0.0.1-SNAPSHOT
            design
            SpringBoot多模块应用
            
                17
            
            
                
                    org.springframework.boot
                    spring-boot-starter-web
                
                
                    org.projectlombok
                    lombok
                    true
                
                
                    org.springframework.boot
                    spring-boot-starter-test
                    test
                
            
            
                
                    
                        org.springframework.boot
                        spring-boot-maven-plugin
                        
                            
                                
                                    org.projectlombok
                                    lombok