【Maven】分模块开发与设计与依赖管理

news2024/11/28 11:40:01

目录

一、分模块开发与设计

1. 分模块开发的意义

2. 分模块开发(模块拆分)

二、依赖管理

1. 依赖传递

2. 可选依赖

3. 排除依赖

4 可选依赖和排除依赖的区别

一、分模块开发与设计

1. 分模块开发的意义

问题导入

分模块开发对工程有什么好处?

模块拆分原则

目的:项目的扩展性变强了,方便其他项目引用相同的功能。

  • 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享

2. 分模块开发(模块拆分)

问题导入

一个完整的工程依据什么来进行模块的拆分?

2.1 创建Maven模块

2.2 书写模块代码

注意事项:

  1. 分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分

2.3 通过maven指令安装模块到本地仓库(install指令)

mvn install
  1. 团队内部开发需要发布模块功能到团队内部可共享的仓库中(私服)

二、依赖管理

  • 依赖管理指当前项目运行所需的jar,一个项目可以设置多个依赖

  • 格式:

<!--设置当前项目所依赖的所有jar-->
<dependencies>
    <!--设置具体的依赖-->
    <dependency>
        <!--依赖所属群组id-->
        <groupId>org.springframework</groupId>
        <!--依赖所属项目id-->
        <artifactId>spring-webmvc</artifactId>
        <!--依赖版本号-->
        <version>5.2.10.RELEASE</version>
    </dependency>
</dependencies>

1. 依赖传递

问题导入

A依赖B,B依赖C,A是否依赖于C呢?

  • 依赖具有传递性

    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系

    • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

    • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

2. 可选依赖

问题导入

A依赖B,B依赖C,如果A不想将C依赖进来,是否可以做到?

  • 可选依赖指对外隐藏当前所依赖的资源————不透明

<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven_03_pojo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性-->
    <optional>false</optional>
</dependency>

3. 排除依赖

问题导入

A依赖B,B依赖C,如果A不想将C依赖进来,是否可以做到?

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本————不需要

  • 排除依赖资源仅指定GA即可,无需指定V

<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven_04_dao</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--排除依赖是隐藏当前资源对应的依赖关系-->
    <exclusions>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </exclusion>
    </exclusions>
</dependency>

4 可选依赖和排除依赖的区别

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

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

相关文章

ChatGPT - 横看成岭侧成峰

定义 ChatGPT 是什么&#xff1f; ChatGPT是由OpenAI开发的一个人工智能聊天机器人程序&#xff0c;由 OpenAI 公司于2022年11月推出。该程序使用基于GPT-3.5架构的大型语言模型并通过强化学习进行训练。 ChatGPT以对话方式进行交互&#xff0c;可以用于包括自动文本生成、自…

一起自学SLAM算法:8.3 LOAM算法

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 不管是Gmapping还是Cartographer&#xff0c;通常都是采用单线激光雷达作为输入并且只能在室内环境运行。虽然Cartographer支持2D建图和3D建图模式&#xff0c;但是Cartographer采用3D建图模式构建出来的地图格式…

微信小程序 java失物招领系统uniAPP设计

开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 基于微信小程序的失物招领系…

四轮两驱小车(三):STM32驱动MPU6050进行转弯

前言&#xff1a; 寒假已经过了一半了&#xff0c;前段时间跟学弟一起从零开始搞了一下深度学习&#xff0c;现在才想起来这个系列还没有更完。本篇博客主要介绍一下这个小车转直角弯的神器----MPU6050 MPU6050介绍&#xff1a; 我所采用的MPU6050是某宝上十几块钱的这种&…

FPGA:Verilog HDL程序的基本结构

⭐本专栏针对FPGA进行入门学习&#xff0c;从数电中常见的逻辑代数讲起&#xff0c;结合Verilog HDL语言学习与仿真&#xff0c;主要对组合逻辑电路与时序逻辑电路进行分析与设计&#xff0c;对状态机FSM进行剖析与建模。 &#x1f525;本文已收录于FPGA系列专栏&#xff1a;FP…

Redis从入门到精通-常用命令

本文使用命令行模式进行操作 &#xff08;1&#xff09;keys keys的作用是返回所有符合条件的key的列表 *是返回所有的&#xff0c;名字不限制 也可以使用限制 这个命令的原理是查询到所有名字符合条件的&#xff0c;然后返回 练习可以用&#xff0c;但是千万别在生产环境使…

C++学习笔记之数组,结构体...

1️⃣.一维数组的声明&#xff1a; 一般声明&#xff1a;typeName arrayName[arraysize]; 要创建数组&#xff0c;可使用声明语句。数组的声明应该指出数组的①存储在每个元素中的值的类型②数组名③数组中的元素数 比如&#xff1a; short month[12] //create an array o…

各位软件工程师,你知道如何转行跨入Web3.0领域吗?

本篇博客介绍一些 Web3 领域相关知识&#xff0c;由于擦哥长期从事的 Python 研发工作&#xff0c;所以很多内容将从 Python 程序员的视角出发进行阐述。 本系列文章由擦哥撰写&#xff0c;下述用第三人称橡皮擦转述。 文章目录Web3 的学习路径Web3 是什么&#xff1f;语义网络…

轻松玩转树莓派Pico之六、pico-project-generator使用

之前几个项目&#xff0c;都是通过copy老项目的CMakeLists.txt方式来编译项目&#xff0c;今天来体验一下树莓派官方提供的工具pico-project-generator。pico-project-generator是树莓派官方出的Pico C SDK 项目的自动生成工具&#xff0c;该工具可以通过配置&#xff0c;自动生…

JavaEE9-Spring Boot概念,创建和运行

目录 1.Spring Boot是什么&#xff1f;为什么要学&#xff1f; 1.1.概念 1.2.优点 2.Spring Boot项目创建 2.1.使用Idea创建&#xff08;ide开发商提供&#xff09; 2.1.1.使用Idea社区版 2.1.2.使用Idea专业版 2.2.网页版创建&#xff08;Spring官方提供&#xff09; …

基于深度学习的车道线检测论文解读

Ultra Fast Structure-aware Deep Lane Detection 论文地址:https://arxiv.org/abs/2004.11757 1.任务概述 车道线检测使用OpenCV就能够实现,而基于深度学习的车道线检测尝试解决车道线检测中的遮挡问题。 数据集介绍: 常用数据集:CULane Dataset,Tusimple(特点就是非常…

PostgreSQL 逻辑复制搭建测试

一、 准备工作 1. Publication&#xff08;发布&#xff09;节点 postgersql.conf wal_level logical max_replication_slots 8 #每个订阅需要消耗一个slot max_wal_senders 10 #每个订阅需要使用一个wal sender max_worker_processes128 #必须 >max_wal_senders加并…

BIO NIO AIO IO多路复用的区别

1、基础概念 1.1、阻塞非阻塞和同步异步的结合 下面通过例子来具体说明&#xff1a; 同步阻塞&#xff1a; 小明一直盯着下载进度条&#xff0c;到100%的时候完成。 同步体现在&#xff1a;小明关注下载进度条并等待完成通知。&#xff08;可以看成同步是我主动关注任务完成的…

进度管理(上)

规划进度管理 定义&#xff1a;规划进度管理是为实施项目进度管理制定计划的过程。 输入&#xff1a; 1、项目管理计划 2、项目章程&#xff08;包含里程碑&#xff0c;这个和规划进度有直接干系&#xff09; 3、组织过程资产 4、事业环境因素。 输出&#xff1a;进度管…

2 线性回归demo数据-参数配置|训练回归模型|常见的tensor格式|Hub模块简介|气温数据集与任务介绍

文章目录线性回归demo数据-参数配置线性回归demo数据-训练回归模型常见的tensor格式scalarvectormatrix线性回归demo数据-参数配置 # 先传入数据&#xff0c;可以是手动定义&#xff0c;也可以导入&#xff0c;这边就直接拿一条直线y2x1&#xff0c;来进行模拟了。 # 构造x和y…

一篇五分生信临床模型预测文章代码复现——Figure 7 外部数据集验证模型

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

python爬虫学习笔记-SQL学习

Sql概述 先来看一个例子&#xff1a;小王第一次使用数据库&#xff0c;然后跟数据库来了个隔空对话 其实&#xff0c;我们想一想&#xff0c;mysql是一个软件&#xff0c;它有它自己一套的管理规则&#xff0c;我们想要跟它打交道&#xff0c;就必须遵守它的规则&#xff0c;如…

【stl -- 常用算法】

目录&#xff1a;前言一、遍历算法for_each、transform二、查找、统计算法find、find_ifadjacent_findbinary_searchcount、count_if三、排序算法sortrandom_shufflemergereverse拷贝、替换算法copyreplace、replace_ifswap算数生成算法accumulatefill集合算法set_intersection…

Day10 @Import整合第三方框架原理

1 前言Spring与MyBatis注解方式整合有个重要的技术点就是lmport&#xff0c;第三方框架与Spring整合xml方式很多是凭借自定义标签完成的&#xff0c;而第三方框架与Spring整合注解方式很多是靠import注解完成的。然后Import可以导入如下三种类&#xff1a;普通的配置类&#xf…

【蓝桥杯】历届真题 画廊(决赛)Java

【资源限制】 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 【问题描述】 小蓝办了一个画展&#xff0c;在一个画廊左右两边陈列了他自己的作品。为了使画展更有意思&#xff0c;小…