springboot聚合工程的部署与深入讲解

1.什么是聚合工程

如下图所示,拥有父子包结构的springboot工程叫做聚合工程。其中父包包括了多个子包(多个项目)。

springboot聚合工程的部署与深入讲解_第1张图片

2.聚合工程优势

  1. 组件化管理通用功能,动态的添加功能。
  2. 统一管理jar包的版本号
  3. 提高复用性

3.创建聚合工程

1.首先创建一个springboot项目,然后删除src文件夹 。

2.创建子工程

springboot聚合工程的部署与深入讲解_第2张图片

选择spring boot项目,然后继续,创建项目。如果是工具,配置,组件化的项目(不需要启动)可以继续删除启动类和resources文件夹。

springboot聚合工程的部署与深入讲解_第3张图片

3. 修改父工程和子工程pom文件。然后聚合工程就搭建好了,这里最重点是pom文件的配置和标签,下文就开始介绍。

4.父工程详解

ps:这里以若依开源项目为例,结构如下,我们主要讲解红框里面的配置,父工程为RuoYi-Cloud,包括ruoyi-auth,ruoyi-gateway,ruoyi-visual,ruoyi-api,ruoyi-common子项目。而ruoyi-modules子工程也包括多个子工程。

springboot聚合工程的部署与深入讲解_第4张图片

1.pom文件



    4.0.0

    com.ruoyi
    ruoyi
    2.5.0

    ruoyi
    http://www.ruoyi.vip
    若依微服务系统

    
        2.5.0
        UTF-8
        UTF-8
        1.8
        2.3.7.RELEASE
        Hoxton.SR9
        2.2.5.RELEASE
		2.3.1
        2.1.4
        2.9.2
        1.5.24
        1.26.5
        2.3.2
        1.3.0
        1.2.4
        3.2.1
        2.5
        1.3.3
        1.7
        1.2.75
        8.0.3
		4.1.2
        2.6.2
    

    
    
        

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

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

            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
			
            
            
                de.codecentric
                spring-boot-admin-starter-client
                ${spring-boot-admin.version}
            
			
            
            
                com.github.tobato
                fastdfs-client
                ${tobato.version}
            
			
            
            
                org.mybatis.spring.boot
                mybatis-spring-boot-starter
                ${spring-boot.mybatis}
            
			
            
            
                io.swagger
                swagger-models
                ${swagger.core.version}
            
            
                io.swagger
                swagger-annotations
                ${swagger.core.version}
            

            
            
                com.github.penggle
                kaptcha
                ${kaptcha.version}
            

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

            
            
                commons-io
                commons-io
                ${commons.io.version}
            

            
            
                org.apache.poi
                poi-ooxml
                ${poi.version}
            

            
            
                commons-fileupload
                commons-fileupload
                ${commons.fileupload.version}
            

            
            
                org.apache.velocity
                velocity
                ${velocity.version}
                
                    
                        commons-collections
                        commons-collections
                    
                
            

            
            
                com.alibaba
                fastjson
                ${fastjson.version}
            
            
            
            
                org.apache.commons
                commons-pool2
                ${common-pool.version}
            

            
	        
                com.ruoyi
                ruoyi-common-core
                ${ruoyi.version}
            
			
            
            
                com.ruoyi
                ruoyi-common-swagger
                ${ruoyi.version}
            
	        
            
            
                com.ruoyi
                ruoyi-common-security
                ${ruoyi.version}
            
	        
            
            
                com.ruoyi
                ruoyi-common-datascope
                ${ruoyi.version}
            
            
            
            
                com.ruoyi
                ruoyi-common-datasource
                ${ruoyi.version}
            
			
            
            
                com.ruoyi
                ruoyi-common-log
                ${ruoyi.version}
            
			
            
            
                com.ruoyi
                ruoyi-common-redis
                ${ruoyi.version}
            
			
            
            
                com.ruoyi
                ruoyi-api-system
                ${ruoyi.version}
            
			
        
    

    
		ruoyi-auth
		ruoyi-gateway
		ruoyi-visual
		ruoyi-modules
		ruoyi-api
		ruoyi-common
    
    pom

    
        
        
            io.swagger
            swagger-annotations
            1.5.10
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    ${java.version}
                    ${java.version}
                    ${project.build.sourceEncoding}
                
            
        
    


都是非必须,字面意思。
:域 例如com
:公司名  groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的
:项目的版本号
:属性的占位符 如java中的常量 

:在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

:指定所有的子工程都下载该包。

白话说 如果父工程有,且groupId和artifactId相同,那么子工程不需要指定版本号, 直接使用父工程版本号。

例如:当子工程有groupId为org.springframework.cloud时,引用当前父工程指定版本。子工程不用在写版本号了。


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

:指当前父工程包含的子工程 如果这里不引入 那么 刷新父工程pom时 子工程不会下载jar包
:打包配置
pom在聚合工程中 一定要配置 指的是在引入其他工程时 直接引入代码,否则就会打成jar包 这样就会报错了

5.ruoyi-modules子工程配置

这里我们选择一个最有代表性的子工程ruoyi-modules来介绍。

1.pom文件



    
        com.ruoyi
        ruoyi
        2.5.0
    
    4.0.0

    
        ruoyi-system
        ruoyi-gen
        ruoyi-job
        ruoyi-file
    

    ruoyi-modules
    pom

    
        ruoyi-modules业务模块
    


这里主要配置是

:内容就是父工程的
:指该工程包含ruoyi-system,ruoyi-gen,ruoyi-job,ruoyi-file子工程

2.ruoyi-system子项目配置



    
        com.ruoyi
        ruoyi-modules
        2.5.0
    
    4.0.0
	
    ruoyi-modules-system

    
        ruoyi-modules-system系统模块
    
	
    
    	
    	
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
    	
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-sentinel
        
        
    	
        
            org.springframework.boot
            spring-boot-starter-actuator
        
		
        
        
            io.springfox
            springfox-swagger-ui
            ${swagger.fox.version}
        
		
        
        
            mysql
            mysql-connector-java
        
        
        
        
            com.ruoyi
            ruoyi-common-datasource
        
        
        
        
            com.ruoyi
            ruoyi-common-datascope
        
        
        
        
            com.ruoyi
            ruoyi-common-log
        
        
        
        
            com.ruoyi
            ruoyi-common-swagger
        

    

    
        ${project.artifactId}
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
            
        
    
   

:配置父工程ruoyi-modules的
:本项目的依赖

如果想引入其他工程,只需要加入:

        
        
            com.ruoyi
            ruoyi-common-datascope
        
        
        
        
            com.ruoyi
            ruoyi-common-log
        
        
        
        
            com.ruoyi
            ruoyi-common-swagger
        

总结

到此这篇关于springboot聚合工程的部署与讲解的文章就介绍到这了,更多相关springboot聚合工程部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(springboot聚合工程的部署与深入讲解)