Spirng boot maven多模块打包踩坑

最近折腾了两次spring boot在maven下的多模块打包,踩了很多坑,现在记录如下。

项目目录:

  • 项目 P
  • 模块 A
  • 模块 B
  • 公有基础模块 C
  • Mybatis基础模块 M

父pom.xml文件:

  
  com.parent
  demo
  0.0.1-SNAPSHOT

  
  
    C
    M
  

  
  
      org.springframework.boot
      spring-boot-starter-parent
      2.0.0.M5
  

  
  
    
      
        com.module
        c
        ${project.version}
      
      
        com.module
        m
        ${project.version}
      
    
  

  
  
    UTF-8        UTF-8
    1.8
  

  
  
    
      org.springframework.boot
      spring-boot-starter
    
  

  
  
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.1
          
            ${java.version}
            ${java.version}
            
      

      
          org.apache.maven.plugins
          maven-surefire-plugin
          2.19.1
            
              true    
            
      
    
  

模块A的pom.xml

  com.module
  a
  0.0.1-SNAPSHOT
  jar

  
  
    com.parent
    demo
    0.0.1-SNAPSHOT
    ../pom.xml
  

  
  
        
            
                org.springframework.boot
                spring-boot-maven-plugin
          
            
            com.module.a.Application
            ZIP
          
          
            
              
                repackage
              
            
          
      
        
    

模块B的pom.xml

同A即可

模块C的pom.xml

如果是共有模块的话,不需要打包,否则会报错,因为其他模块在打包的时候会自动添加依赖进去,如果这里打包了,其他的模块就找不到该依赖了。

  com.module
    c
    0.0.1-SNAPSHOT
    jar

  
  
    com.parent
    demo
    0.0.1-SNAPSHOT
    ../pom.xml
  

模块M的pom.xml

如果项目中使用的Mybatis的话,肯定是作为一个单独的模块来处理的,这个Mybatis是需要打包的

  com.module
  m
  0.0.1-SNAPSHOT
  jar

  
  
    com.parent
    demo
    0.0.1-SNAPSHOT
    ../pom.xml
  

  
  
        
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.5
                
                    
                        Generate MyBatis Artifacts
                        none
                        
                            generate
                        
                    
                
                
                    true
                
            
        
    

打包

按照上面的配置好以后,执行下面的命令就好了

  mvn clean package

但是如果使用了多个模块,上面的命令是会吧全部的模块都执行打包的,如果只是打包某个模块的话,可以用

  mvn -pl A -am install

你可能感兴趣的:(Spirng boot maven多模块打包踩坑)