谷粒商城第五天-优化项目的Maven工程的pom结构

目录

一、为什么要优化

二、如何优化

三、总结


一、为什么要优化

老师的那种pom结构实在是混乱,写了几天之后实在是受不了了,他的混乱的地方主要体现在以前各处:

1. 复用性缺乏

老师在使用boot初始化器创建maven微服务模块时,为每个模块都选择了远程调用的openfeign依赖,这样没有得到复用。

2. 不够清晰

模块中pom中的依赖实在是混乱,想用到那个就直接添加,并且每个pom里面可能还放着boot、cloud、alibaba的dependencies很混乱,不清晰

二、如何优化

1. 直接在总的父pom中统一指定好boot、cloud、alibaba的dependencies依赖。

这样就能在之后的微服务中的这些框架下的组件统一好版本



    4.0.0

    com.sq
    gulimall
    1.0-SNAPSHOT
    pom
    
        gulimall-common
        gulimall-product
        gulimall-coupon
        gulimall-member
        gulimall-order
        gulimall-ware
        gulimall-geteway
        thirdparty
        gulimall-admin
    

    
        8
        8
        UTF-8
        2.3.12.RELEASE
        Hoxton.SR12
        2.2.10-RC1
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        
    

2. 将公共的依赖抽取到common模块中去

由于公共模块也是继承的父pom,而父pom中又定义了这三个框架,其实也就是进行了版本控制。里面放好各个微服务可能需要的公共依赖,例如nacos的注册中心/配置中心等、MyBatisPlus依赖、MySql驱动等依赖。还是逆向生成所需的,以及maven编译插件等反正是公共的东西全放这里面。


    4.0.0
    
        com.sq
        gulimall
        1.0-SNAPSHOT
    

    gulimall-common


    
        
            org.springframework.boot
            spring-boot-starter-test
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
        
            com.alibaba.fastjson2
            fastjson2
            2.0.25
        
        
            mysql
            mysql-connector-java
            8.0.28
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.3
        
        
            org.projectlombok
            lombok
            1.18.26
        
        
            junit
            junit
            3.8.1
            test
        
        
            org.springframework.boot
            spring-boot-starter-security
        
        
            org.apache.commons
            commons-lang3
            3.12.0
        
        
            com.github.pagehelper
            pagehelper
            5.2.1
        
        
            javax.validation
            validation-api
            2.0.1.Final
        
        
            org.springframework.boot
            spring-boot-starter-validation
        
        
            org.apache.poi
            poi-ooxml
            5.2.3
        
        
            io.jsonwebtoken
            jjwt
            0.9.1
        
        
            org.springframework.boot
            spring-boot-starter-data-redis
        
        
            io.springfox
            springfox-swagger2
            2.9.2
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

 3. 对于需要使用到公共模块的微服务模块(通常来说就是业务模块,非工具模块),直接引入common依赖即可,注意:这得先让common模块install一下。



    4.0.0
    
        com.sq
        gulimall
        1.0-SNAPSHOT
    

    gulimall-product


    
        
            com.sq
            gulimall-common
            1.0-SNAPSHOT
        

    



4.  一般而言,对于工具模块,例如网关模块,并不需要那么多的依赖,因此没必要导入common依赖,根据自己的需求进行导入即可



    4.0.0
    
        com.sq
        gulimall
        1.0-SNAPSHOT
    

    gulimall-geteway

    
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
            org.springframework.cloud
            spring-cloud-starter-gateway
        
    

5. 对于需要大部分的common模块中的依赖,但不需要少部分,并且可能还会出现依赖冲突等情况下,可以使用exclusions标签对不想要的依赖进行排除,例如在第三方服务的微服务模块



    4.0.0
    
        com.sq
        gulimall
        1.0-SNAPSHOT
    

    thirdparty

    
        8
        8
        UTF-8
    
    
        
            com.sq
            gulimall-common
            1.0-SNAPSHOT
            
                
                    com.baomidou
                    mybatis-plus-boot-starter
                
                
                    org.springframework.boot
                    spring-boot-starter-security
                
            
        
        
            org.springframework.cloud
            spring-cloud-starter-alicloud-oss
            0.9.0.RELEASE
        
    

三、总结

按照以上的几步,基本上就能够使得pom管理很清晰了,各个模块之间的关系也较为清晰了。依赖的复用性也提高了。

你可能感兴趣的:(maven,微服务,谷粒商城,maven)