Maven聚合项目(微服务项目)创建流程,以及pom详解

一、创建流程

1、首先创建springboot项目作为父项目

只留下pom.xml 文件,删除src目录及其他无用文件

Maven聚合项目(微服务项目)创建流程,以及pom详解_第1张图片

 2、创建子项目

子项目可以是maven项目,也可以是springboot项目

Maven聚合项目(微服务项目)创建流程,以及pom详解_第2张图片

3、父子项目关联

Maven聚合项目(微服务项目)创建流程,以及pom详解_第3张图片

 4、父项目中依赖管理



    4.0.0

    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.3
         
    


    
        system
        gateway
        common
    

    com.matter
    record
    0.0.1-SNAPSHOT
    syh_matter_record_server
    syh_matter_record_server
    pom

    
    
        
            org.projectlombok
            lombok
        

        
        
            mysql
            mysql-connector-java
        
    

    
    
        1.8
        2021.0.1
        2021.0.1.0
        3.4.3.4
        2.0.9
        1.4.3
    

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

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

            
            
                com.baomidou
                mybatis-plus-boot-starter
                ${mybatis.plus.version}
            

            
            
                com.alibaba.fastjson2
                fastjson2
                ${fastjson2.version}
            

            
            
                com.github.pagehelper
                pagehelper-spring-boot-starter
                ${pagehelper.version}
            
        
    

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


 depedencyManagement标签介绍

在maven的聚合工程中,父模块的pom文件中,使用dependencyManagement统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,不用每个模块项目都弄一个版本号,不利于管理。

dependencyManagement里只是声明依赖,并不自动实现引入,需要子项目声明需要用的依赖。

  1. 如果不在子项目中声明依赖,是不会从父项目中继承下来的;
  2. 如果在子项目中写了该依赖项,但是没有指定具体版本,这时候才会从父项目中继承相应依赖,以及相应的version和scope;
  3. 如果在子项目中写了该依赖项,并且项目中指定了版本号,那么会使用子项目中指定的版本,不再使用父项目指定的依赖版本号。

父项目使用depedencyManagement声明依赖,子工程引入依赖不需要声明版本

5、公共模块使用

第一步:创建公共模块 common

第二步:父子关联

第三步:其他模块使用公共模块 common

dependencies标签引入公共模块 common,然后就可以调用方法了

Maven聚合项目(微服务项目)创建流程,以及pom详解_第4张图片

二、遇到的问题以及解决方法

1、公共模块被其他模块引入后使用,使用正常,打包报错 程序包 com.xxx.common.utils不存在或者xxx找不到符号

原因:SpringBoot工程打包编译时,会生成两种jar包,一种是普通的jar,另一种是可执行jar。默认情况下,这两种jar的名称相同,在不做配置的情况下,普通的jar先生成,可执行jar后生成,造成可执行jar会覆盖普通的jar。而service工程无法依赖common-utils工程的可执行jar,所以编译失败:程序包不存在。
解决:在common-utils工程中,pom.xml文件中加入配置即可:


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

        
 

2、Maven多模块项目无法加载其他模块(公共模块)下的Bean

比如公共模块中有redis序列化配置,以及redis工具类需要需要注入

Maven聚合项目(微服务项目)创建流程,以及pom详解_第5张图片

 在需要使用的模块中的启动类添加 @ComponentScan注解

// 值为一个数组,表示扫描的路径,递归扫描到最后
@ComponentScan(basePackages = {"com.example"})

 这里看到我们两个模块刚好前缀一样,所以只配置一个路径即可

Maven聚合项目(微服务项目)创建流程,以及pom详解_第6张图片

 Maven聚合项目(微服务项目)创建流程,以及pom详解_第7张图片

 

你可能感兴趣的:(微服务与分布式,maven,spring,boot,java)