maven进阶(超详细)

news2024/12/23 11:04:31

 多模块开发

1.抽取entity模块

将先前的SSMProject01项目中的entity文件夹抽取出来,成为一个独立的模块

在SSMProject01项目中引入maven_03_entity

首先找到maven_03_entity的pom文件

直接引入SSMProject01

 尝试编译(compile)SSMProject01项目报错,是因为没有在本地的maven库中引入maven_03_entity,进行引入(install)后,编译SSMProject01成功。

2.抽取dao模块

抽取SSMProject01项目里面的mapper文件夹,使其成为maven_04_mapper模块。

里面需要maven_03_entity实体类模块,还需要导入mysql的依赖

同时maven_04_mapper要导入SSMProject01

同样的,我们需要先install  maven_04_mapper   到maven的本地仓库 才能 compile SSMProject01

总结

将抽取后的项目进行运行,测试之前的增删改查功能依然能够使用。 所以对于项目的拆分,大致会有如下几个步骤: (1) 创建Maven模块 (2) 书写模块代码 分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。拆 分方式可以按照功能拆也可以按照模块拆。 (3)通过maven指令安装模块到本地仓库(install 指令)

依赖管理

依赖的格式

验证依赖是具有传递性的

 

这里我们手动在SSMProject01项目的pom文件中把maven_03_entity的依赖给注释掉,然后重新编译

编译成功。

所以在分模块开发中,由于不够严谨,我们实际上可能引入了重复的依赖。这个我们称之为依赖冲突。

依赖冲突,冲突时maven会如何选择?

 

 情况1:

情况2:

情况3: 

********************

 

 可选依赖和排除依赖

可选依赖:

对外隐藏当前所依赖的资源(不透明

SSMProject01中只引入maven_04_mapper 

maven_04_mapper 引入maven_03_entity

这样SSMProject01 是能正常运行的。

******************************************

现在在maven_04_mapper的pom中设置对maven_03_entity的引入为可选依赖

 导致的结果:

maven_04_mapper 一切正常  (因为它是对外隐藏,自己还能用maven_03_entity)

SSMProject01 出现错误

这是因为 maven_04_mapper模块   对SSMProject01  隐藏了   对maven_03_entity的引入

排除依赖

排除依赖是指主动断开依赖的资源

重新回到最初的状态:

SSMProject01中只引入maven_04_mapper 

maven_04_mapper 引入maven_03_entity

现在我们在SSMProject01的pom文件中   对maven_04_mapper 的引入中  排除对maven_03_entity的引入

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>maven_04_mapper</artifactId>
            <version>1.0-SNAPSHOT</version>
            <exclusions>
<!--                主动排除maven_03_entity-->
                <exclusion>
                    <groupId>org.example</groupId>
                    <artifactId>maven_03_entity</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

这样同样会报错,因为找不到maven_03_entity里面的实体类

 

聚合和继承 

聚合

注:我们的SSMProject01模块在这里作为maven_02_ssm(当然可以进一步拆分模块),这个01序号是留给maven_01_parent模块,我们聚合模块用的。下面的继承也是。

继承

注:实现继承和聚合可以是同一个模块,但是继承和聚合完全是两回事。

*******************************************

区分与总结

maven中的属性 

 配置文件中的属性

版本管理 

多环境开发

跳过测试

私服 

感觉和git一个作用啊???

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

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

相关文章

前后端分离项目实战-通用管理系统搭建(前端Vue3+ElementPlus,后端Springboot+Mysql+Redis)第三篇:登录功能优化

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Vue自己实现监视数据、Vue.set创建属性、Vue监视数据的原理

目录 1. 自己实现监视数据2. 使用Vue.set创建一个数据属性3. Vue监视数据的原理 1. 自己实现监视数据 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body&g…

【blender小技巧】如何拆分模型、合并和删除模型,删除多余骨骼

文章目录 前言进入面选择模式选取全部面拆分模型1、选中项——单独拆分2、按材质——按材质拆分3、按按松散块 合并模型删除模型某一块删除多余骨骼1、手动删除2、使用CATS插件的Fix Model 最终效果完结 前言 有时候&#xff0c;我们得到的模型是一个整体&#xff0c;想修改其…

VUE使用过程中的问题记录

现象1&#xff1a;npm run dev卡住不动 现象 问题原因&#xff1a; template 里面放一个元素我放了两个&#xff0c;改成一个好了

手机录音怎么降噪提取人声?四种高效提取人声的软件介绍!

手机录音怎么降噪提取人声&#xff1f;在日常生活中&#xff0c;手机录音成为了我们记录声音和音乐的重要工具。然而&#xff0c;录音时常会受到背景噪音的干扰&#xff0c;这不仅影响了音质&#xff0c;也使得人声的提取变得困难。为了帮助您更好地处理录音文件&#xff0c;我…

SAP Withholding Tax

SAP系统中的Withholding Tax&#xff08;预扣税&#xff09;配置是一个详细的过程&#xff0c;涉及到多个步骤和组件。以下是一些关键步骤和配置要点的概述&#xff1a; 定义业务地点&#xff1a;为公司所拥有的每个税务扣除账户号码&#xff08;TAN&#xff09;创建业务地点 。…

TPM管理培训:线上VS线下,哪种方式更胜一筹?

线上和线下的TPM管理培训各有优势&#xff0c;无法简单地评判哪种更胜一筹&#xff0c;而是要根据具体需求和实际情况来选择&#xff0c;深圳天行健TPM管理咨询公司解析如下&#xff1a; - 线上机构的优势 1.灵活性高&#xff1a;学员可以在任何有网络的地方进行学习&#xff…

SD卡数据恢复怎么做?一键恢复全攻略来了!

在数字时代&#xff0c;SD卡是我们用来存照片、视频和重要文件的小帮手。但有时候&#xff0c;如果不小心删了东西、误格式化了卡&#xff0c;或者设备出了点小问题&#xff0c;SD卡里的数据就可能找不到了。这时候&#xff0c;一款好用的SD卡数据恢复软件就能帮我们找回丢失的…

深入浅出消息队列----【如何保证消息不丢失?】

深入浅出消息队列----【如何保证消息不丢失&#xff1f;】 消息流转链路生成且发送消息流程存储流程消费流程 本文仅是文章笔记&#xff0c;整理了原文章中重要的知识点、记录了个人的看法 文章来源&#xff1a;编程导航-鱼皮【yes哥深入浅出消息队列专栏】 消息流转链路 消息从…

斯坦福大学研究人员,推荐的课题申报AI提示词分享

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 斯坦福大学心血管医学部研究人员创建了一个 GitHub 仓库&#xff0c;以汇集和整理使用AI帮助科研人员撰写更具竞争力的基金申请书。 以下是该Github仓库分享的好用的基金文本撰…

碰撞检测 | 基于ROS Rviz插件的多边形碰撞检测仿真平台

目录 0 专栏介绍1 基于多边形的碰撞检测2 碰撞检测仿真平台搭建2.1 多边形实例2.2 外部服务接口2.3 Rviz插件化 3 案例演示3.1 功能介绍3.2 绘制多边形 0 专栏介绍 &#x1f525;课设、毕设、创新竞赛必备&#xff01;&#x1f525;本专栏涉及更高阶的运动规划算法轨迹优化实战…

Ryzen 9000X3D还没来,先等来了R5 7600X3D

原文转载修改自&#xff08;更多互联网新闻/搞机小知识&#xff09;&#xff1a; R5 7600X3D或于下月初推出&#xff0c;6核12线程102MB缓存 昨天我们刚刚聊过Ryzen 9000在欧洲部分地区开售即打折的“骚操作”&#xff0c;上周我们也曾分享过R9 9900X和R9 9950X首周在德不过50…

智慧水务平台主要帮助水司解决哪些问题,是如何解决的?

在快速发展的现代社会&#xff0c;水资源管理与服务面临着前所未有的挑战。传统水务管理模式已难以满足日益增长的需求与高标准的服务要求。正是基于此&#xff0c;我们隆重推出“智慧水务平台”&#xff0c;专为水司量身定制&#xff0c;一键式解决运营中的各类难题&#xff0…

easy click安卓版纯本地离线文字识别插件

目的 easy click是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。easy click也包含图色功能&#xff0c;识别屏幕上的图像&#xff0c;根据图像的变化自动执行相应的操作。本篇文章主要讲解下更优…

EasyExcel_通过模板导出(多sheet、列表、图片)

文章目录 前言一、EasyExcel是什么&#xff1f;二、模板样式调整三、使用步骤1.引入jar包2.方法示例2.1 Controller&#xff1a;2.2 Service&#xff1a;2.3 ServiceImpl:2.4 合并策略&#xff1a;2.5 对应DTO 总结 前言 产品今天提了个需求&#xff0c;大概是这样的&#xff…

中秋节月饼销售利用106短信群发平台业绩翻倍案例分析

在中秋节这一传统佳节&#xff0c;月饼作为节日的标志性食品&#xff0c;其销售市场竞争尤为激烈。为了在众多品牌中脱颖而出&#xff0c;不少月饼销售企业开始探索创新的营销方式。其中&#xff0c;利用106短信群发平台进行精准营销&#xff0c;成为众多企业实现业绩翻倍的有效…

C\C++ Sqlite3使用详解

C\C++ Sqlite3使用详解 一、源码下载二、sqlite3接口说明C++2.1 项目创建以及sqlite3使用2.1 连接数据库2.2 sqlite创建表2.2.1 示例代码2.2.2 注意事项2.3 sqlite插入数据2.3.1 示例代码2.3.2 注意事项2.4 sqlite数据删除2.5 sqlite数据查询一、源码下载 下载地址: https://…

思科设备静态路由实验

拓扑及需求 网络拓扑及 IP 编址如图所示&#xff1b;PC1 及 PC2 使用路由器模拟&#xff1b;在 R1、R2、R3 上配置静态路由&#xff0c;保证全网可达&#xff1b;在 R1、R3 上删掉上一步配置的静态路由&#xff0c;改用默认路由&#xff0c;仍然要求全网可达。 各设备具体配置…

UE5.4 - 内容浏览器

目录 一. 简介 二. 打开方式 1.顶部菜单栏打开 2.工具栏创建 3.底部工具栏按钮 三.界面详细介绍 1.导航栏 2.源面板 3.集合 4.筛选器 ​编辑 5.搜索栏 6.资产视图 7.设置按钮 四. 开发者内容 一. 简介 一种你可以用于查看、管理和处理项目中所有资产的工具。 二…

java 变量 基础类型及其转换

为什么需要变量 一个程序就是一个世界 变量是程序的基本组成单位 //不论是使用那种高级程序语言编写程序,变量都是其程序的基本组成单位,比如 //变量有三个基本要素(类型名称值) class Test{public static void main(String[] args) {//定义了一个变量,类型int整型,名称a,值…