IDEA创建springboot聚合项目(多模块开发)

一.为什么要创建聚合项目

使用Java技术开发的工程项目,无论是数据处理系统还是Web网站,随着项目的不断发展,需求的不断细化与添加,工程项目中的代码越来越多,包结构也越来越复杂这时候工程的进展就会遇到各种问题:

(1)不同方面的代码之间相互耦合,这时候一系统出现问题很难定位到问题的出现原因,即使定位到问题也很难修正问题,可能在修正问题的时候引入更多的问题。

(2)多方面的代码集中在一个整体结构中,新入的开发者很难对整体项目有直观的感受,增加了新手介入开发的成本,需要有一个熟悉整个项目的开发者维护整个项目的结构(通常在项目较大且开发时间较长时这是很难做到的)。

(3)开发者对自己或者他人负责的代码边界很模糊,这是复杂项目中最容易遇到的,导致的结果就是开发者很容易修改了他人负责的代码且代码负责人还不知道,责任追踪很麻烦。

        将一个复杂项目拆分成多个模块是解决上述问题的一个重要方法,多模块的划分可以降低代码之间的耦合性(从类级别的耦合提升到jar包级别的耦合),每个模块都可以是自解释的(通过模块名或者模块文档),模块还规范了代码边界的划分,开发者很容易通过模块确定自己所负责的内容。 

二,用IDEA创建聚合项目

1.首先使用 Spring Initializr 来快速创建好一个Maven工程。然后删除无关的文件,保留pom.xml 文件 ,将打包方式改为pom如下。

IDEA创建springboot聚合项目(多模块开发)_第1张图片

 2.创建项目的子模块,在项目上右键单击,选择:new -> Module 

IDEA创建springboot聚合项目(多模块开发)_第2张图片

其中muxi-redis和muxi-utils为muxi-common模块下的子模块,创建时别忘了改项目路径,如下图

IDEA创建springboot聚合项目(多模块开发)_第3张图片

3 .更改父工程的pom.xml   文件为如下  注意标签是否指定了子模块

IDEA创建springboot聚合项目(多模块开发)_第4张图片

代码如下 



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.2.RELEASE
         
    
    com.muxi
    springboot-muxiblog
    ${muxi.version}
    springboot-muxiblog
    pom
    Demo project for Spring Boot

    
        muxi-web
        muxi-admin
        muxi-db
        muxi-common
        muxi-service
    

    
        UTF-8
        UTF-8
        1.8
        1.0-SNAPSHOT
        3.2.0
        4.1.5
        2.8.8
        1.2.10
        4.5.3
        2.8.0
        0.0.9
    

    
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-autoconfigure
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            mysql
            mysql-connector-java
            5.1.39
        
        
        
            com.alibaba
            druid
            1.1.10
        

        
            org.projectlombok
            lombok
            1.16.18
            provided
        

        
        
            cn.hutool
            hutool-all
            ${hutool.version}
        

        
        
            cn.afterturn
            easypoi-base
            ${easypoi.version}
            
                
                    guava
                    com.google.guava
                
            
        
        
            cn.afterturn
            easypoi-annotation
            ${easypoi.version}
        
        
        
            io.springfox
            springfox-swagger-ui
            ${springfox.version}
        
        
            io.springfox
            springfox-swagger2
            ${springfox.version}
        
        
            com.fasterxml.jackson.core
            jackson-databind
            2.9.4
        
        
            com.fasterxml.jackson.core
            jackson-annotations
            2.9.4
        
        
            com.fasterxml.jackson.core
            jackson-core
            2.9.4
        

        
            com.google.code.gson
            gson
            2.8.3
        
        
            com.alibaba
            fastjson
            ${fastjson.version}
        
        
            org.codehaus.janino
            janino
            3.0.7
        
        
        
            com.github.axet
            kaptcha
            ${kaptcha.version}
        
        
        
            com.baomidou
            mybatisplus-spring-boot-starter
            1.0.4
        
        
            com.baomidou
            mybatis-plus
            2.1.6
        

        
        
            org.apache.commons
            commons-lang3
            3.5
        
        
        
            commons-collections
            commons-collections
            3.2.1
        
        
        
            org.apache.velocity
            velocity
            1.7
            test
        
        
        
            log4j
            log4j
            1.2.17
        
        
        
            org.aspectj
            aspectjweaver
            1.8.8
        
        
        
            org.springframework
            spring-aop
        
        
        
            org.apache.httpcomponents
            httpclient
            4.5.2
        
    



4.web子模块pom.xml(依赖service、db、redis子模块)



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.2.RELEASE
         
    
    com.muxi
    muxi-web
    0.0.1-SNAPSHOT
    muxi-web
    Demo project for Spring Boot

    
        1.8
    

    
        
            com.muxi
            muxi-service
            1.0-SNAPSHOT
        
        
            com.muxi
            muxi-db
            1.0-SNAPSHOT
        
        
            com.muxi
            muxi-redis
            1.0-SNAPSHOT
        
    


 

你可能感兴趣的:(IDEA创建springboot聚合项目(多模块开发))