千家信息网

springboot聚合工程是什么意思

发表于:2024-10-18 作者:千家信息网编辑
千家信息网最后更新 2024年10月18日,小编给大家分享一下springboot聚合工程是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.什么是聚合工程如
千家信息网最后更新 2024年10月18日springboot聚合工程是什么意思

小编给大家分享一下springboot聚合工程是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    1.什么是聚合工程

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

    2.聚合工程优势

    1. 组件化管理通用功能,动态的添加功能。

    2. 统一管理jar包的版本号

    3. 提高复用性

    3.创建聚合工程

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

    2.创建子工程

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

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

    4.父工程详解

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

    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聚合工程是什么意思"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

    0