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

网友投稿 261 2022-11-26

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

目录1.什么是聚合工程2.聚合工程优势3.创建聚合工程4.父工程详解1.pom文件5.ruoyi-modules子工程配置1.pom文件总结

1.什么是聚合工程

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

2.聚合工程优势

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

统一管理jar包的版本号

提高复用性

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文件

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.ruoyi

ruoyi

2.5.0

ruoyi

http://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}

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.ruoyi

ruoyi

2.5.0

ruoyi

http://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}

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文件

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

com.ruoyi

ruoyi

2.5.0

4.0.0

ruoyi-system

ruoyi-gen

ruoyi-job

ruoyi-file

ruoyi-modules

pom

ruoyi-modules业务模块

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

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子项目配置

xmlns="http://maven.apache.org/POM/4.0.0"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

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

xmlns="http://maven.apache.org/POM/4.0.0"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

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

总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Centos7下搭建Hadoop2.6完全分布式环境
下一篇:Hbase API 创建表错误记录 for Docker 容器部署集群
相关文章

 发表评论

暂时没有评论,来抢沙发吧~