【解决方案】Maven项目结构调整

  • 一、背景
  • 二、思路
  • 三、调整步骤
    • 3.1 调整`system`子模块POM文件
    • 3.2 调整`业务A`子模块POM文件
    • 3.3 资源文件剪切到`业务A`子模块
    • 3.4 启动类放到`业务A`子模块
    • 3.5 总结
  • 四、优化方向
  • 五、重新审视Maven
    • 5.1 能做什么
    • 5.2 依赖管理
    • 5.2 排除依赖

一、背景

笔者开发的某后台管理系统的项目依赖管理工具使用的是Maven,软件主体框架采用SpringBoot,业务逻辑开发采用MVC设计模式。

发现的问题:

在后期的开发过程中,system子模块会被很多子模块依赖,如业务AB子模块需要依赖system子模块中的用户字典等信息。

原来的软件结构是把在system子模块当做主模块,开发的业务AB子模块引入到system子模块的依赖中进行启动。因此公共信息是在业务AB子模块中访问不到。

二、思路

访问不到需要的类,就把它引入进来撒,引入不来,也要想办法引入进来。
——第一原则

经过调整后,业务AB子模块都依赖于system子模块。

基于el-admin我们来分析一下system子模块依赖,


业务A子模块的依赖为,

三、调整步骤

3.1 调整system子模块POM文件

删除原来对业务A的依赖即可。

3.2 调整业务A子模块POM文件

3.3 资源文件剪切到业务A子模块

system子模块中的resource文件夹内的文件悉数剪切到业务A子模块。

3.4 启动类放到业务A子模块

3.5 总结

调整起来,方便又快捷,源于Spring框架的强大配置特征,在子模块包名的命名上也要尽量保持一致,这样配置类的参数更改不需要太多就可以完成软件结构的优化和调整。

四、优化方向

业务A业务B子模块都依赖system子模块,而system子模块太重了,后期对system子模块进行拆分,使业务A业务B子模块依赖变得轻量化。

五、重新审视Maven

5.1 能做什么

  • 项目构建
  • 依赖管理
  • 项目信息管理

5.2 依赖管理

依赖管理是Maven工具的强大之处。要懂得依赖范围、传递性、路径选择。

5.2 排除依赖

使用IDEAMaven Helper插件来查看冲突的依赖包,对冲突的依赖包进行排除。

该插件能干点啥呢?

  • 分析和排除冲突依赖项
  • 运行/调试当前文件或根模块的Maven模块
  • 在当前 Maven 模块路径打开终端的操作
  • 运行/调试当前测试文件的操作

【移花接木】Maven项目结构调整解决方案相关推荐

  1. java ee maven_针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom...

    java ee maven 为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务 ...

  2. 针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom

    为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务器上的部署并细化我的配置. ...

  3. Maven笔记(2)-- 常用命令和标准的Maven项目结构

    http://www.cnblogs.com/luxh/archive/2012/11/06/2757441.html 1.常用命令 1)创建一个Project mvn archetype:gener ...

  4. Maven | 05.Maven项目结构及Maven命令

    文章目录 参考视频 1.Maven项目结构 2.使用命令构建Maven项目 2.1.Maven构建命令(在DOS窗口中) 2.2.构建Maven项目 参考视频 06-第一个Maven程序-Maven项 ...

  5. Maven 简介 及 标准的Maven项目结构

    Maven是基于项目对象模型(Pom),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 发文时,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具.遗憾的是, ...

  6. 在maven项目结构下对于Resources目录下文件的存取

    在maven项目中,文件结构如下: proj---src----main ----java ----Main.java ----resources ----userFile.properties -- ...

  7. 2016-5-31 项目结构调整

    项目结构: TchApp.CefClient->tchclient:主程序,负责加载cef3 TchApp.Main=tchmain:程序主执行模块,负责为cef3提供资源和处理来自cef3的调 ...

  8. eclipse创建maven项目结构显示不全的解决办法

    在eclipse中创建maven项目 1.项目结构图(显示不全) 2.正常的maven项目结构图 解决办法 项目右键 ----> Properties(或Alt+Enter) ----> ...

  9. eclipse中maven项目红叉解决方案

    我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一 ...

最新文章

  1. ThinkSNS+ 是如何计算字符显示长度的
  2. python 获取10位和13位 时间戳
  3. vue-lazyload 的vue 懒加载的使用
  4. 编译项目的时候,不会编译依赖的类库项目
  5. 一文弄懂什么是RPC
  6. springboot2.x 从零到一(1、快速创建服务)
  7. 浙大首届人工智能本科生9月入学,纳入竺院图灵班
  8. 常用jar包之commons-collection使用
  9. 银联在线php支付接口,PHP网站在线银联支付实现大额付款案例
  10. PHP中根据汉字返回拼音
  11. uniapp的苹果全屏播放再退出会导致页面字体变大解决方法
  12. LGP970刷机心得
  13. docker pull xxx 失败 超时 timeout
  14. think php 导出excel,Thinkphp5导出excel
  15. VS 2019 C++ 如何在非控制台程序中打开控制台
  16. Jmeter导出性能测试报告
  17. 计算机考试打字小作文,关于打字考试的感悟作文
  18. JavaScript实现炸金花
  19. 第七篇 FastAI模型训练
  20. 使用Java基于selenium实现淘宝秒杀自动化

热门文章

  1. cip协议服务器,CIP(通用工业协议)_百度百科
  2. 使用Python,OpenCV进行银行支票数字和符号的OCR!
  3. 出向链路负载均衡之协议分流
  4. python pexpect输出_Python Pexpect详解
  5. roscore 无相应
  6. 业务分析(CBAP)第01讲:核心概念模型
  7. 架构:推荐四个PHP最佳后端框架
  8. 云久淘客系统,微信公众号,淘客返利系统。
  9. Bitwig Studio 4 v4.3 WiN-MAC-Linux 跨多平台音乐制作软件
  10. A. A Blend of Springtime