springboot聚合工程讲解与部署
1.什么是聚合工程
如下图所示,拥有父子包结构的springboot工程叫做聚合工程。其中父包包括了多个子包(多个项目)。
2.聚合工程优势
- 组件化管理通用功能,动态的添加功能。
- 统一管理jar包的版本号
- 提高复用性
3.创建聚合工程
- 首先创建一个springboot项目,然后删除src文件夹 。
- 创建子工程
选择spring boot项目,然后继续,创建项目。如果是工具,配置,组件化的项目(不需要启动)可以继续删除启动类和resources文件夹。
- 修改父工程和子工程pom文件。然后聚合工程就搭建好了,这里最重点是pom文件的配置和标签,下文就开始介绍。
4.父工程详解
ps:这里以若依开源项目为例,结构如下,我们主要讲解红框里面的配置,父工程为RuoYi-Cloud,包括ruoyi-auth,ruoyi-gateway,ruoyi-visual,ruoyi-api,ruoyi-common子项目。而ruoyi-modules子工程也包括多个子工程。
#
1.pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.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"><modelVersion>4.0.0</modelVersion><groupId>com.ruoyi</groupId><artifactId>ruoyi</artifactId><version>2.5.0</version><name>ruoyi</name><url>http://www.ruoyi.vip</url><description>若依微服务系统</description><properties><ruoyi.version>2.5.0</ruoyi.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-boot.version>2.3.7.RELEASE</spring-boot.version><spring-cloud.version>Hoxton.SR9</spring-cloud.version><spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version><spring-boot-admin.version>2.3.1</spring-boot-admin.version><spring-boot.mybatis>2.1.4</spring-boot.mybatis><swagger.fox.version>2.9.2</swagger.fox.version><swagger.core.version>1.5.24</swagger.core.version><tobato.version>1.26.5</tobato.version><kaptcha.version>2.3.2</kaptcha.version><pagehelper.boot.version>1.3.0</pagehelper.boot.version><druid.version>1.2.4</druid.version><dynamic-ds.version>3.2.1</dynamic-ds.version><commons.io.version>2.5</commons.io.version><commons.fileupload.version>1.3.3</commons.fileupload.version><velocity.version>1.7</velocity.version><fastjson.version>1.2.75</fastjson.version><minio.version>8.0.3</minio.version><poi.version>4.1.2</poi.version><common-pool.version>2.6.2</common-pool.version></properties><!-- 依赖声明 --><dependencyManagement><dependencies><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud Alibaba 微服务 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 监控客户端 --><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>${spring-boot-admin.version}</version></dependency><!-- FastDFS 分布式文件系统 --><dependency><groupId>com.github.tobato</groupId><artifactId>fastdfs-client</artifactId><version>${tobato.version}</version></dependency><!-- Mybatis 依赖配置 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${spring-boot.mybatis}</version></dependency><!-- Swagger 依赖配置 --><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>${swagger.core.version}</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>${swagger.core.version}</version></dependency><!-- 验证码 --><dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>${kaptcha.version}</version></dependency><!-- pagehelper 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper.boot.version}</version></dependency><!-- io常用工具类 --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons.io.version}</version></dependency><!-- excel工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${poi.version}</version></dependency><!-- 文件上传工具类 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>${commons.fileupload.version}</version></dependency><!-- 代码生成使用模板 --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>${velocity.version}</version><exclusions><exclusion><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId></exclusion></exclusions></dependency><!-- JSON 解析器和生成器 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!-- 公共资源池 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>${common-pool.version}</version></dependency><!-- 核心模块 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-core</artifactId><version>${ruoyi.version}</version></dependency><!-- 接口模块 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-swagger</artifactId><version>${ruoyi.version}</version></dependency><!-- 安全模块 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-security</artifactId><version>${ruoyi.version}</version></dependency><!-- 权限范围 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-datascope</artifactId><version>${ruoyi.version}</version></dependency><!-- 多数据源 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-datasource</artifactId><version>${ruoyi.version}</version></dependency><!-- 日志记录 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-log</artifactId><version>${ruoyi.version}</version></dependency><!-- 缓存服务 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-redis</artifactId><version>${ruoyi.version}</version></dependency><!-- 系统接口 --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-api-system</artifactId><version>${ruoyi.version}</version></dependency></dependencies></dependencyManagement><modules><module>ruoyi-auth</module><module>ruoyi-gateway</module><module>ruoyi-visual</module><module>ruoyi-modules</module><module>ruoyi-api</module><module>ruoyi-common</module></modules><packaging>pom</packaging><dependencies><!-- swagger --><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.10</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build></project>
<name><url><description>都是非必须,字面意思。
<groupId>:域 例如com
<artifactId>:公司名 groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的
<version>:项目的版本号
<properties>:属性的占位符 如java中的常量 <dependencyManagement>:在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。<dependencies>:指定所有的子工程都下载该包。
白话说 如果父工程有,且groupId和artifactId相同,那么子工程不需要指定版本号, 直接使用父工程版本号。
例如:当子工程有groupId为org.springframework.cloud时,引用当前父工程指定版本。子工程不用在写版本号了。
<!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency>
<modules>:指当前父工程包含的子工程 如果这里不引入 那么 刷新父工程pom时 子工程不会下载jar包
<build>:打包配置
<packaging>pom</packaging>在聚合工程中 一定要配置 指的是在引入其他工程时 直接引入代码,否则就会打成jar包 这样就会报错了
5.ruoyi-modules子工程配置
这里我们选择一个最有代表性的子工程ruoyi-modules来介绍。
1.pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"><parent><groupId>com.ruoyi</groupId><artifactId>ruoyi</artifactId><version>2.5.0</version></parent><modelVersion>4.0.0</modelVersion><modules><module>ruoyi-system</module><module>ruoyi-gen</module><module>ruoyi-job</module><module>ruoyi-file</module></modules><artifactId>ruoyi-modules</artifactId><packaging>pom</packaging><description>ruoyi-modules业务模块</description></project>
这里主要配置是
<parent>:内容就是父工程的<groupId><artifactId><version>
<modules>:指该工程包含ruoyi-system,ruoyi-gen,ruoyi-job,ruoyi-file子工程
2.ruoyi-system子项目配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"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"><parent><groupId>com.ruoyi</groupId><artifactId>ruoyi-modules</artifactId><version>2.5.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>ruoyi-modules-system</artifactId><description>ruoyi-modules-system系统模块</description><dependencies><!-- SpringCloud Alibaba Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringCloud Alibaba Nacos Config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- SpringCloud Alibaba Sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- SpringBoot Actuator --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- Swagger UI --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger.fox.version}</version></dependency><!-- Mysql Connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- RuoYi Common DataSource --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-datasource</artifactId></dependency><!-- RuoYi Common DataScope --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-datascope</artifactId></dependency><!-- RuoYi Common Log --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-log</artifactId></dependency><!-- RuoYi Common Swagger --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-swagger</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
<parent>:配置父工程ruoyi-modules的<groupId><artifactId><version>
<dependencies>:本项目的依赖
如果想引入其他工程,只需要加入:
<!-- RuoYi Common DataScope --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-datascope</artifactId></dependency><!-- RuoYi Common Log --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-log</artifactId></dependency><!-- RuoYi Common Swagger --><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common-swagger</artifactId></dependency>
springboot聚合工程讲解与部署相关推荐
- DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在
DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在 问题描述 springboot 项目打包(package)或安装到仓库(install)的时候报错:程序包com.fu ...
- Springboot父子工程搭建到部署
文前知识 子项目可以继承父项目的依赖, 前提是需要使用parent标签指定父项目 子项目可以单独引入依赖, 依赖只对当前子项目有效 子项目中没有页面打包方式可以为jar, 有页面打包使用war 创建父 ...
- springboot聚合工程(多模块)install时找不到包的问题及解决方案
https://www.jianshu.com/p/b8f90b5ae79a 转载自上述链接,做个记录
- springboot工程的热部署
springboot工程的热部署 (1)第一步配置pom.xml (2)第二步更改IDEA设置 什么是热部署配置呢? 我们在开发中反复修改类.页面等资源,每次修改后都是需要重新启动才生效,这样每次启动 ...
- 构建springboot微服务聚合工程
这里使用IDEA构建一个springcloud聚合工程demo ,服务注册与发现组件使用eureka,然后使用ribbon实现客户端负载均衡 在创建工程之前,我是先把eureka服务端给创建好了,参照 ...
- Spring Boot Maven聚合工程 打包部署教程
Spring Boot 给聚合工程 打包部署,这里打jar包进行部署,首先等保证父子工程能正常运行,依赖都能加载,不会造成maven之间循环依赖等问题,如图 从上面的图来看,就会发生循环依赖的问题,这 ...
- 【多模块聚合工程】IDEA搭建SpringBoot多模块聚合工程详细步骤
这篇文章主要是介绍一下,如何在IDEA开发工具下,搭建一个基于SpringBoot的多模块聚合工程项目. 多模块聚合工程:按照MVC的思想,将应用分成三层web.service.mapper/dao这 ...
- Springboot2 D3 SpringBoot开发实用篇 - 热部署 - 配置高级 - 测试
SpringBoot开发实用篇 运维实用篇完结以后,开发实用篇采用日更新的形式发布给各位小伙伴,基本上是每天一集,目前已经发布完毕. 开发实用篇中因为牵扯到SpringBoot整合各种各样的技 ...
- 将springboot项目和vue项目部署到windows 2016 server(服务器)
将springboot项目和vue项目部署到服务器 1.服务器环境配置 1.1 服务器需要安装的环境 1.2 服务器需要配置的入站与进站规则 2.springboot项目的打包 2.1 springb ...
最新文章
- java 导出 jar lib_java使用IDEA引入外部jar和导出可执行jar文件的方法
- arm02gnu/linux,2.1. 支持的硬件 - Debian GNU/Linux 安装手册(PPC架构)
- composer php 使用方法,Composer的基本使用方法
- Git 初始化及仓库创建及操作
- boost::geometry::model::infinite_line用法的测试程序
- [转]Android笔记:ScrollView嵌套ViewPager的滚动冲突解决方法
- vue-router配置介绍和使用方法(三)
- NetCore EF Code Frist
- 网站暴库原理与方法剖析
- Chrome 复制网页不可复制的文字
- android粘贴,Android复制粘贴到剪贴板
- 即时聊天工具混战中国
- 深入探索Android卡顿优化(下)
- 【Scratch画图100例】图39-scratch实心圆 少儿编程 scratch编程画图案例教程 考级比赛画图集训案例
- 公众号怎么做意见反馈菜单_公众号菜单怎么添加意见反馈表
- 【终极!!!】cannot connect to X server, couldnt connect to display
- 生物信息学测序之常见测序方法DNA文库构建
- ansible register 之用法
- 读书笔记 | 西方国有经济的兴衰
- DaisyDisk Mac磁盘数据分析工具发现占用空间的垃圾文件
热门文章
- [转] 大三下,我们该做什么?
- N-Tiers開發方式(ASP/ASP.NET、VB6/VB.NET呼叫使用COM+元件)
- java中的super和this_在Java中super和this的区别
- Java 并发编程艺术 读书笔记
- 【参赛时间延长】InterSystems技术写作大赛:Python
- 腾讯云服务器修改ssh端口,简谈腾讯云更换SSH登录端口
- 基于ROS机器人的3D物体识别与三维重建(四)视觉SLAM基础(十四讲学习记录)
- 宠物小精灵之收服 01背包 POJ4102
- Vue数据更新但页面没有更新的多种情况
- SQL经典50查询语句(面试题)案例2