码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【移花接木】Maven项目结构调整解决方案


    【解决方案】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子模块会被很多子模块依赖,如业务A、B子模块需要依赖system子模块中的用户、字典等信息。

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

    二、思路

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

    经过调整后,业务A、B子模块都依赖于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 排除依赖

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

    在这里插入图片描述

    该插件能干点啥呢?

    • 分析和排除冲突依赖项
    • 运行/调试当前文件或根模块的Maven模块
    • 在当前 Maven 模块路径打开终端的操作
    • 运行/调试当前测试文件的操作
  • 相关阅读:
    uniapp支付宝小程序授权用户信息、授权手机号码
    备战23秋招,c/c++Linux后端开发岗(简历/技术面)分享
    springboot实现转发和重定向
    Python 中的省略号对象
    Spring Start制作
    pytorch直线拟合
    【C++】template方法undefined reference to(二):C++代码的编译过程
    【单片机毕业设计】【mcuclub-jj-004】基于单片机的楼道节能灯的设计
    2022/6/30学习总结
    Deep Learning相关概念介绍
  • 原文地址:https://blog.csdn.net/qq_40657528/article/details/126826587
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号