Maven高级(一)--分模块设计与开发

news2024/11/17 8:19:16

一.Maven回顾
Maven是一款构建和管理java项目的工具。
如果我们需要开发一些中大型的项目,仅凭基础知识难以应付,所以我们接下来还需要学习Maven提供的一些高级功能,这些功能在中大型项目应用是非常多的。
Maven的高级内容包括:【1】分模块设计与开发【2】继承与聚合【3】私服
二.分模块设计与开发
1.介绍
指的是我们在设计一个java项目的时候,将一个java项目拆分成多个模块进行开发。
2.未分模块设计的问题:
【1】不方便项目的维护和管理
假如我们开发的是一个大型的电商项目,里面可能就包括了商品模块的功能、搜索模块的功能、购物车模块、订单模块、用户中心等等。这些所有的业务代码我们都在一个 Java 项目当中编写。项目当中的业务功能可能会越来越多,这时候需要进一步的分类。
另外大家可以试想一下,假如我们开发的是一个大型的电商网站,这个项目组至少几十号甚至几百号开发人员,这些开发人员如果全部操作这一个 Java 项目,此时大家就会发现我们项目管理和维护起来将会非常的困难。
【2】项目的通用组件难以利用
假如在我们的项目当中,我们自己定义了一些通用的工具类和组件,而公司还有其他的项目组也想使用我们所封装的这些组件和工具类,是非常不方便的。因为 Java 项目当中包含了当前项目的所有业务代码,所以就造成了这里面所封装的一些组件会难以复用
【3】影响性能和不安全
另外,没有拆分模块设计,直接将这个项目都依赖进来,项目在启动时将会把所有的类都加载进来,会影响性能,同时也意味着我们所有的业务代码都对用公开了,这是非常不安全的。


所以我们要进行分模块设计。例如:

如果我们需要用到另外一个模块的功能,我们直接依赖模块就可以了。
分模块设计就是将项目按照功能/结构拆分成若干个子模块,方便项目的管理维护、拓展,也方便模块键的相互调用、资源共享。

3.实现(比如说要将com.itheima.pojo包拆分出去)
【1】新建一个正常的Maven模块(例如命名为tlias-pojo,它会叫你填写该模块的坐标信息)
【2】在这个tlias-pojo模块中创建一个包com.itheima.pojo(和原来案例项目中的pojo包名一致)
【3】并在这个包中编写对应的文件和代码(注意:这个tlias-pojo模块中也要在其对应的pom.xml中引入代码所需库的对应的依赖,就像c++的分文件编写一样,每个文件也要引入对应的头文件)
【4】在原来的项目中引入tlias-pojo的依赖(或者说是坐标),如果原来项目中含有com.itheima.pojo包要删除。
(注:分模块编写一般需要先对模块功能进行设计,再进行编码,不会先将工程开发完毕,然后进行拆分)

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

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

相关文章

vue3向对象中添加属性

使用场景:后端返回一个数组对象结构,会出现可能需要前端自己向对象中添加一个新的字段 在vue2中我们常常会遇到明明已经改变了数据,视图却没有实时更新这样的问题 这时vue2就提供了一个方法就是$set this.$set(this.userInfo, age, 12)但是在…

计算机组成原理综合实验设计:基于proteus的小型CPU的设计

基于proteus的小型CPU的设计 摘要 本文详细介绍了该小型CPU的设计模板及预估实现的功能,然后对模块的原理进行详实的概述。之后对项目设计进行了分析,从原理图和电路设计图方面进行了完整的呈现。在介绍完基本的设计框架后,本文对项目中的每…

Linux系统编程:文件描述符和重定向

目录 一. 文件描述符 1.1 什么是文件描述符 1.2 OS如何通过文件描述符找到指定文件 1.3 文件描述符的分配规则 二. 重定向 2.1 重定向的现象和底层原理 2.2 通过系统接口dup2实现重定向 三. 总结 一. 文件描述符 1.1 什么是文件描述符 Liunx操作系统为用户提供了四…

微积分习题课

目录 例题1: 例题2: 解法2: 例题3: 例题4: 方法2: 例题5: 例题6: 例题7: 例题8: 例题9: ​编辑 例题1: 例题2: 解法2&…

二元函数的泰勒展开

定理如下: 证明如下: 注意: 证明的核心要点是转化为关于新的变量的一元函数。

【Linux】进程间通信 -- 匿名管道 | pipe系统调用

什么是通信?为什么要有通信?如何实现?管道通信匿名管道 pipe系统调用读写特征管道的特征: 什么是通信? 进程具有独立性,我们现在的进程间需要通信,那么这个成本一定不低 数据传输:一个进程需要将…

@FeignClient源码浅析

Spring如何识别FeignClient 从EnableFeignClients 出发,寻找Spring如何识别FeignClient 从源码中查看到Import(FeignClientsRegistrar.class) Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Documented Import(FeignClientsRegistrar.class) pub…

PyQt结合OpenCV实现实时人流量统计

1. 废话篇(可跳过) 之前学的基本都是Web端的技术。前两天的面试,让我深入的去学习一下 Qt 技术,了解完概念之后,才知道我之前接触的类 TkInter 技术,有点安卓开发的味道。。。 2. 人流量统计效果图 3. 业务…

L1-027 出租(Python实现) 测试点全过

题目 下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]2 对应 arr[2]1,index[1]0 对应 arr[0]8,index[2]3 对应 arr[…

Php Jenkins phpunit配置

目录 作用 前提 安装 安装xUnit插件 win10重启Jenkins 全局环境设置 创建项目配置 描述 源码管理 构建触发器 构建步骤 插件安装 工作空间 php代码phpunit文件示例 项目根目录配置 phpunit.xml Protect/Tests/test_start.php composer.json 作用 jenkins 自动…

【docker部署安装ApiSix】

docker安装ApiSi 常见问题-提前查阅 1-端口被占用 确保所需的所有端口(默认的 9080/9091/9443/2379/9000)未被其他系统/进程使用 #查询端口占用情况 netstat -antp |grep 9443# 如果端口冲突可尝试修改apisix的端口配置, # 但不建议&#x…

0305kali linux配置运行-docker-macos aarm64

文章目录 1 下载运行2 配置2.1 配置系统环境2.2 配置SSH服务2.3 安装工具 3 问题总结结语 1 下载运行 拉取kali linux镜像 docker pull kalilinux/kali-rolling该镜像为“纯净版”系统,没有任何工具,体积小。下面当我们运行起来之后,到容器中…

GlusterFs 分布式复制卷(Distributed-Replicate)性能测试

目录 fio工具参数解释 Glusterfs 和NFS 性能测试 顺序写: 随机写: 顺序读: 随机读: 随机读写: 参数说明: 测试结论: 与NFS对比 压测对比结果 NFS和GlusterFs的优缺点 NFS的优点 NFS…

基于卷积神经网络VGG的猫狗识别

!有需要本项目的实验源码的可以私信博主! 摘要:随着大数据时代的到来,深度学习、数据挖掘、图像处理等已经成为了一个热门研究方向。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远…

综合能源系统(1)——综合能源系统基本定义与内涵

综合能源系统关键技术与典型案例  何泽家,李德智主编 综合能源系统基本定义 综合能源系统(Integrated Energy System,IES)的概念最早产生于热电联产领域,侧重于热电系统的协同优化,而后逐渐扩展丰富,涉及电、热、冷…

DEVICENET转MODBUS-TCP网关应用案例

远创智控YC-DNT-TCP连接到DEVICENET总线中做为从站使用,连接到 MODBUS-TCP 总线中做为主站或从站使用。是自主研发的一款 DEVICENET 从站功能的通讯网关。 YC-DNT-TCP常用拓展图 技术指标 网关的 MODBUS 接口可通过拨码选择做为主站(客户端&#xff09…

QNAP威联通NAS搭建SFTP服务,并内网穿透实现公网远程访问

文章目录 前言1. 威联通NAS启用SFTP2. 测试局域网访问3. 内网穿透3.1 威联通安装cpolar内网穿透3.2 创建隧道3.3 测试公网远程访问 4. 配置固定公网TCP端口地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址4.3 测试使用固定TCP端口地址远程连接威联通SFTP 转载自远程内…

【算法集训之线性表篇】Day 05

文章目录 题目思路代码实现效果 题目 将两个有序顺序表合并为一个有序顺序表,函数结果返回值为顺序表。 思路 我们可以利用二路归并排序算法中的Merge函数思路,设置两个指针i,j,分别记录在顺序表a和b中的访问位置,再…

【未解决】No rule to make target ‘/usr/lib/x86_64-linux-gnu/libGL.so‘

测试ros自带的PCL1.8是否能用,网上找个测试代码,编译阶段报错: cmake .. -- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR) ** WARNING ** io features related to ensenso will be disabled -- Could NOT find …

Blender环境纹理材质贴图入门教程

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 大家好,今天跟大家分享Blender材质贴图入门图文教程,一套blender的PBR材质包,和HDRI环境纹理贴图,在文末领取,希望能助到大家更高效完成场景练习。 据我了解…