maven模块化开发部署

之前一直维护迭代的产品,因为有很多客户使用.有些用户有定制化需求,需要添加新的模块功能.因此需要平台主体功能迭代的同时,非主体功能和定制化功能插件化.

一.实现方案

分为开发和部署两个步骤:

1.开发

已经确定肯定是采用maven父子工程,单独的模块可独立开发及独立部署.

原因是产品的主体功能(模块1)和非主体功能(模块2)完全解耦,

不能通过模块1引用模块2的代码.因为这样会导致部署主体功能必须引入非主体功能,

达不到模块化部署的目的,必须引入整体部署,这个有悖瓶产品功能插件化的初衷.

2.部署

基于模块开发的代码独立性,可以是插件式整合到主体产品,也可以作为一个独立运行的模块部署,辅助于主体产品.部署可以有两种场景:

1.直接整合打成一个包,整体部署

java 复制代码
//产品主体+非主体模块压入后直接部署
//主体为jar,将非主体模块的jar解压并压入主体jar
//需要注意的是,被压入的文件夹结构必须与jar的内部结构一致(文件夹层)
jar uvf 主体.jar ./非主体模块的jar解压后的文件夹/

2.分开打包,主体产品部署后引导式插件部署

java 复制代码
//方案可以有两种.
//1.引导非主体jar解压并入主体jar,重启主体jar,插件服务生效(插入过程见场景1)
//2.引导非主体jar独立运行,辅助主体jar,提供服务

额外知识点:将解压后的jar重新压缩为jar的命令为 jar cvfM0 new.jar ./之前解压的

相关推荐
Wx-bishekaifayuan4 分钟前
springboot房屋租赁系统11574-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·sql·spring·课程设计
三84421 分钟前
Fastjson 漏洞学习笔记 · 03 · 经典利用链:TemplatesImpl 与 JdbcRowSetImpl
java·web安全·fastjson
蜗牛互联网1 小时前
GPT-6.1 Sol迁移指南:从token单价转向每任务成本门禁
java·人工智能·后端·gpt
蜗牛互联网1 小时前
HSTU在Dynamo-Triton中的AOTI与KV缓存验收方法
java·人工智能·后端·缓存
Sirens.1 小时前
Java多线程实例:单例模式、阻塞队列、线程池与定时器
java·开发语言·单例模式
青山木1 小时前
秒杀系统设计(一):需求拆解与流量治理
java·数据库·redis·后端·架构
卓怡学长1 小时前
w195基于ssm“Fitfrend”个性化健身
java·intellij-idea
驭渊的小故事1 小时前
算法实战:滑动窗口、素数枚举与字符串模拟(三道经典题解)
java·算法
雪落漂泊1 小时前
Linux基本指令(下)
java·linux·服务器
Eloudy1 小时前
全文 - version.A - AMBA CHI Chip-to-Chip(C2C)
java·开发语言·数据库·gpu·chiplet