码农知识堂 - 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 模块路径打开终端的操作
    • 运行/调试当前测试文件的操作
  • 相关阅读:
    js对象扁平化:Javascript对象进行扁平化处理
    八股文--->并发编程
    开展高质量发展统计监测与评价的重要意义是什么
    008:安装Docker
    Java面向对象知识详解——三大基本特征
    25.0、C语言——自定义数据类型_枚举和共用体
    Webmin -- File Manager模块
    maven插件exec-maven-plugin、maven-antrun-plugin使用详解
    猿创征文|枚举类增强型for循环遍历
    剑指offer打卡(一)
  • 原文地址:https://blog.csdn.net/qq_40657528/article/details/126826587
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号