Maven高级——分模块设计与开发

news2024/11/20 12:31:38

Maven的定义:

一个用来构建和管理java项目的工具。

分模块设计

一个大型项目通常需要有很多功能实现,这些功能分成多个模块,卸载一个项目里面最后只会导致这个项目越来越大。不便于维护,以及组件难以复用。

在项目设计的时候就可以将不同的功能切分成为多个模块,为了方便组件服用还可以将一些实体类,工具类等都单独抽出来到一个模块当中,然后那里需要这些工具类就直接引入该工具类的坐标即可。多个模块如果需要依赖于某些通用组件,只要引入其坐标即可。 之前的案例中有一些POJO中的实体类和utils中的工具类,如果别的模块需要的话只能依赖于该模块,相当于整个项目都暴露出去了,所以就可以将它们抽取出来作为一个新的模块。

对之前的案例进行模块划分。 

 

这里选择将之前的项目重新复制了一份出来用于分模块

新建POJO模块

pojo模块里面仅仅只是存放实体类,所以这里创建一个maven模块即可,不用再创建一个springboot项目,创建如下的一个maven工程,啊父项哪里是继承相关的内容,这里先不用选,然后这个模块不要创建在当前项目下,要创建在和当前项目平级的地方。

创建好之后得到如下

然后将原本项目中pojo包整个移动到新项目中

 然后会出现一些小小的报错,需要引入一个lombok的依赖

   <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>

然后需要删除原项目中pojo软件包,然后原项目会出现报错,pojo下的实体类全没了d

然后就要引入pojo模块才行了,在原项目的pom文件加上POJO模块的坐标

        <dependency>
            <groupId>com.example</groupId>
            <artifactId>talis-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

 备注:差点被坑死在这里pojo模块里面,创建的新模块名字一定要在中间加上一个减号-而不是下划线,并且原项目里面import时的pojo是什么格式的,POJO模块里面也要对应上,例如

 这种的一定要在POJO模块里面有一个com.example.pojo包结构.

一切搞好之后才不会报错了 

新建utils模块

 新建好之后将原项目的utils包复制过来,然后会出现一些报错,需要引入如下的所有依赖,然后再把当模块引入原项目,原模块的utils也可以删除了

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
        <!--阿里云OSS的依赖-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- no more than 2.3.3-->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.3</version>
        </dependency>
        <!--web开发的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>

原项目中引入如下依赖,原项目中的阿里云OSS依赖也可以删除了

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>tilas-utils</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

 前端测试

可以正常显示,说明这里的模块划分没有问题。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九大亮点+六大好处,瑞云科技虚拟仿真实训平台引领教育信息化新潮流

随着新技术的快速发展和数字化转型的加速推进&#xff0c;高等教育面临着培养创新型、复合型、适应型人才的新要求。 虚拟仿真实训教学作为一种新型的教学模式&#xff0c;能够有效解决实训教学中的高投入、高损耗、高风险及难实施、难观摩、难再现的“三高三难”问题&#xf…

如何运行Python程序?

Python 是一种解释型的脚本编程语言&#xff0c;这样的编程语言一般支持两种代码运行方式&#xff1a; 1) 交互式编程 在命令行窗口中直接输入代码&#xff0c;按下回车键就可以运行代码&#xff0c;并立即看到输出结果&#xff1b;执行完一行代码&#xff0c;你还可以继续输…

手搓一个C++11的线程池(含测试)

实现 首先要有线程池这个结构体&#xff1a; 互斥锁条件变量消息队列关闭标志位 struct Pool {std::mutex mtx;std::condition_variable cond;std::queue<std::function<void()>> tasks;bool isClosed;//用来退出无限循环};【首先是线程池的对象】其实就是维护一…

【数据结构与算法】力扣:二叉树的前、中、后序遍历

递归法 前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输入&#xff1a;…

IPO后,北森驶向HR SaaS深水区

透过这次发布会&#xff0c;能感知到的依旧是北森马不停蹄的“加速度”&#xff0c;纪伟国口中不断重复的“以客户为中心”&#xff0c;以及不断开放兼容的生态。 作者| 皮爷 出品|产业家 北森&#xff0c;还是那个北森。 在刚刚举办的“HR SaaS未来势”2023北森春季产品…

Vscode搭建开发调试STM32环境IDE

单片机开发IDE环境如KeilMDK&#xff0c;虽然操作简单&#xff0c;方便调试。但就是代码编辑风格很老套&#xff0c;中文符号乱码还是常有的事。而如今流行的vscode编辑器很不错&#xff0c;免费且相当轻量级&#xff0c;用来代码开发体验很不错&#xff0c;看着都舒服。Clion …

swagger在spring项目中的使用

一、Swagger2介绍 前后端分离开发模式中&#xff0c;api文档是最好的沟通方式。 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 及时性 (接口变更后&#xff0c;能够及时准确地通知相关前后端开发人员)规范性 (并且保…

电子科技大学计算机系统结构复习笔记(一):概述

目录 前言 重点一览 计算机分类 弗林分类法 市场分类 计算机系统结构定义 实现技术\功耗\成本的趋势\可靠性(了解) 计算机性能 性能评价指标 性能评价方法 计算机设计的量化原则 基本方法 Amdahl‘s 定律 CPU 性能公式 / 时间计算 本章小结 前言 本复习笔记基于…

windows环境使用clion搭建redis5.0 redis6.0的源码阅读环境

1、下载cygwin https://cygwin.com/install.html 第一步选择从互联网安装 别放在C盘 选择直接连接 我这边选择的是163的节点 接下来&#xff0c;就是让我们选择要安装的东西&#xff0c;网上一般给的就是如下几个&#xff1a; gcc-core、gcc-g、make、gdb、binutils 一个个…

计算机视觉 | 人体关键点检测与MMPose

前言 人体姿态估计&#xff08;Human Pose Estimation&#xff09;是计算机视觉领域中的一个重要研究方向&#xff0c;也是计算机理解人类动作、行为必不可少的一步&#xff0c;人体姿态估计是指通过计算机算法在图像或视频中定位人体关键点&#xff0c;目前被广泛应用于动作检…

0x34RequestDownload请求下载

0x34RequestDownload 客户端请求协商从客户端到服务器的数据传输。 客户端使用requestDownload服务来启动从客户端到服务器的数据传输&#xff08;下载&#xff09; 。 服务器收到requestDownload请求消息后&#xff0c;服务器应在发送肯定响应消息之前采取所有必要的操作来接…

【手撕Spring源码】深度理解SpringMVC【上】

文章目录 DispatcherServletRequestMappingHandlerMappingRequestMappingHandlerAdapter自定义参数处理器自定义返回值处理器 参数解析器获取参数名对象绑定与类型转换底层第一套转换接口与实现底层第二套转换接口与实现高层转换接口与实现自定义转换器 ControllerAdvice 之 In…

NeRF与三维重建专栏(二)NeRF原文解读与体渲染物理模型

前言 上一章中我们大致介绍了三维重建的背景、NeRF应用于三维重建的难点以及相关数据集和评估指标&#xff0c;本章节将会详细介绍NeRF原文以及部分源码&#xff0c;以及体渲染的物理模型&#xff0c;来帮助读者更好理解NeRF&#xff1b;下一章我们将会结合colmap&#xff0c;讲…

PrivateGPT(如何部署及使用感受)

前言 最近在GitHub上出现了一个名为PrivateGPT的开源项目。该项目旨在为面临敏感数据、涉密信息或个人隐私问题的用户提供一种新的聊天工具。PrivateGPT具备完整的数据控制能力&#xff0c;使用户能够在本地环境中与强大的语言模型进行交互&#xff0c;无需上传数据到互联网或…

kotlin的for循环遍历

kotlin的for循环遍历 1、List val list listOf("A", "B", "C")for (item in list) {println(item)} A B C 2、List的in val list listOf("A", "B", "C")for (item: String in list) {println(item)} A B C 3、l…

【C/C++】基础知识之命名空间与作用域

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

【学习日记2023.6.2】之 管理端报表统计

文章目录 11. 管理端报表统计11.1 Apache ECharts11.1.1 介绍11.1.2 入门案例 11.2 营业额统计11.2.1 需求分析和设计11.2.2 代码开发Controller层Service层接口Service层实现类Mapper层 11.2.3 功能测试11.2.4 提交代码 11.3 用户统计11.3.1 需求分析和设计11.3.2 代码开发Con…

【QCA6174】QCA6174认证DFS跳转信道距离干扰信道太近,导致边带可以检测到信号问题分析及解决方案

WIFI DFS测试要求 Master设备需要测试的项目 4.6.2.1 Channel Availability Check ---信道可用性检查 定义其作为雷达脉冲检测机制,当雷达脉冲出现时所占用的信道需要能被设备检测到已经被占用。当相关信道未被占用时,这些信道被称为Avaliable Channel可用信道 4.6.2.2 In…

23Java面试专题 八股文面试全套真题(含大厂高频面试真题)多线程

文档说明 在文档中对所有的面试题都进行了 难易程度和 出现频率的等级说明 星数越多代表权重越大&#xff0c;最多五颗星&#xff08;☆☆☆☆☆&#xff09; 最少一颗星&#xff08;☆&#xff09; Java多线程相关面试题 1.线程的基础知识 1.1 线程和进程的区别&#xff1f; 难…

敷尔佳三闯IPO:去年狂赚8亿,广告宣传费近4亿

618大促已经开启&#xff0c;敷尔佳能否借“618”撑起“医美面膜第一股”&#xff1f; 近日&#xff0c;哈尔滨敷尔佳科技发展有限公司&#xff08;下称“敷尔佳”&#xff09;更新招股书&#xff0c;继续冲刺“医美面膜第一股”。 敷尔佳是一家主要从事专业皮肤护理产品的研…