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}
${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}
${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小时内删除侵权内容。
暂时没有评论,来抢沙发吧~