【JavaWeb学习Day23】

Maven高级

分模块设计与开发

分模块设计:将一个大项目分成若干个子模块,方便项目的维护、扩展,也方便模块间的相互引用,资源共享。

策略:

1.策略一:按照功能模块拆分,比如:公共组件、商品模块、搜索模块、购物车模块、订单模块等。

2.策略二:按层拆分,比如:公共组件、实体类、控制层、业务层、数据访问层。

3.策略三:按照功能模块+层拆分。

分模块开发:

1.创建maven模块tlias-pojo,存放实体类

2.创建maven模块tlias-utils,存放相关工具类

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

继承与聚合

继承:

继承关系:

概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。

作用:简化依赖配置、统一管理依赖

实现:<parent>...</parent>

继承关系实现:

1.创建maven模块tlias-parent,该工程为父工程,设置打包方式为pom(默认jar)。

2.在子工程中的pom.xml文件中,配置继承关系。

3.在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)。

(jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行);war:普通web程序打包,需要部署在外部的tomcat服务器中运行;pom父工程或聚合工程,该模块不写代码,仅仅进行依赖管理)

注意事项:

1.在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的。

2.relativePath指定父工程的pom文件的相对位置(如果不指定,将从本地仓库/远程仓库查找)。

3.若父子工程都配置了同一个依赖的不同版本,以子过程为准。

版本锁定:

在maven中,可以在父工程的pom文件中通过<denpendencyManagemnet>来统一管理依赖版本。

自定义版本/引用属性:

<denpendencyManagemnet>和<denpendencies>的区别:

<denpendencyManagemnet>是统一管理依赖版本,不会直接依赖,还需要再子工程中引入所需依赖,但无需指定版本

<denpendencies>是直接依赖,在父工程配置了依赖,子工程会直接继承下来。

聚合:

聚合:将多个模块组织成一个整体,同时进行项目的构建。

聚合工程:一个不具有业务功能的“空”工程(有且仅有一个pom文件)

作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)

实现:maven中可以通过<modules>设置当前聚合工程所包含的子模块名称

(注意:聚合工程中包含的模块,在构建时,会自动根据模块间的依赖关系构建顺序,与聚合工程中模块的配置书写位置无关)

maven中继承和聚合的联系和区别:

联系:继承和聚合都属于设计模块,打包方式都为pom,常将两种关系制作到同一个pom文件中。

区别:1.继承用于简化依赖配置、统一管理依赖版本,是在子工程中配置继承关系。2.聚合用于快速构建项目,是在父工程(聚合工程)中配置聚合的模块。

私服

介绍:

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队的资源共享与资源同步问题

依赖查找顺序:本地仓库,私服,中央仓库

(注意:私服在企业项目开发中,一个项目/公司,只需要一台即可,无需我们自己搭建,会使用即可)

资源上传和下载:

项目版本:

RELEASE(发行版本):功能趋于稳定,当前更新停止,可以用于发行的版本,储存在私服中的RELEASE仓库中。

SNAPSHOT(快照版本):功能不稳定,尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。

步骤:

私服准备好了之后,我们要做如下几步配置:

1. 设置私服的访问用户名/密码(在自己maven安装目录下的**conf/settings.xml中的servers中配置)**

<server><id>maven-releases</id><username>admin</username><password>admin</password>
</server><server><id>maven-snapshots</id><username>admin</username><password>admin</password>
</server>

2. 设置私服依赖下载的仓库组地址(在自己maven安装目录下的**conf/settings.xml中的mirrors中配置)**

<mirror><id>maven-public</id><mirrorOf>*</mirrorOf><url>http://localhost:8081/repository/maven-public/</url>
</mirror>

3. 设置私服依赖下载的仓库组地址(在自己maven安装目录下的**conf/settings.xml中的profiles中配置)**

<profile><id>allow-snapshots</id><activation><activeByDefault>true</activeByDefault></activation><repositories><repository><id>maven-public</id><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
</profile>

4. IDEA的maven工程的pom文件中配置上传(发布)地址(直接在**tlias-parent中配置发布地址)**

<distributionManagement><!-- release版本的发布地址 --><repository><id>maven-releases</id><url>http://localhost:8081/repository/maven-releases/</url></repository><!-- snapshot版本的发布地址 --><snapshotRepository><id>maven-snapshots</id><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>

配置完成之后,我们就可以在tlias-parent中执行deploy生命周期,将项目发布到私服仓库中。

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

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

相关文章

图像的特征

图像的特征主要包括以下几类&#xff1a; 1. 颜色特征&#xff1a; 直方图&#xff1a;描述图像中颜色的分布。 颜色矩&#xff1a;通过颜色的均值、方差等统计量表示颜色分布。 主色调&#xff1a;图像中占主导地位的颜色。 2. 纹理特征&#xff1a; 灰度共生矩阵&#xff0…

⭐LeetCode周赛 3468. 可行数组的数目——暴力与数学⭐

⭐LeetCode周赛 3468. 可行数组的数目——暴力与数学⭐ 示例 1&#xff1a; 输入&#xff1a;original [1,2,3,4], bounds [[1,2],[2,3],[3,4],[4,5]] 输出&#xff1a;2 解释&#xff1a; 可能的数组为&#xff1a; [1, 2, 3, 4] [2, 3, 4, 5] 示例 2&#xff1a; 输入&…

AF3 squeeze_features函数解读

AlphaFold3 data_transforms 模块的 squeeze_features 函数的作用去除 蛋白质特征张量中不必要的单维度&#xff08;singleton dimensions&#xff09;和重复维度&#xff0c;以使其适配 AlphaFold3 预期的输入格式。 源代码&#xff1a; def squeeze_features(protein):&qu…

【打卡d4】日期类--分组输入

第一题&#xff1a;根据一年中的第 n 天计算日期 &#x1f4cc; 知识点 判断闰年&#xff1a; 闰年条件&#xff1a;能被 400 整除&#xff0c;或 能被 4 整除但不能被 100 整除。平年&#xff1a;2 月 28 天&#xff1b;闰年&#xff1a;2 月 29 天。 累加月份&#xff0c;找…

JAVA(5)-基础概念

*固定格式 一.注释和关键字 关键字&#xff1a;被赋予特定关系的词 字母全部小写&#xff0c;如class表示一个类 二.字面量 1.字面量类型 *字符串里面的类型是一句话&#xff0c;用双引号 字符里面的类型只有一个字或字母 null只能用字符串的方式打印 2.制表符 \t 至少补…

本地部署Navidrome个人云音乐平台随时随地畅听本地音乐文件

文章目录 前言1. 安装Docker2. 创建并启动Navidrome容器3. 公网远程访问本地Navidrome3.1 内网穿透工具安装3.2 创建远程连接公网地址3.3 使用固定公网地址远程访问 前言 今天我要给大家安利一个超酷的私有化音乐神器——Navidrome&#xff01;它不仅让你随时随地畅享本地音乐…

C++ 中的RAII(资源获取及初始化)

C 中的RAII(资源获取即初始化) RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是C中一种重要的编程范式&#xff0c;全称为“资源获取即初始化”。它是一种通过对象生命周期管理资源&#xff08;如内存、文件句柄、网络连接等&#xff09;的技术&#x…

蓝桥杯嵌入式组第七届省赛题目解析+STM32G431RBT6实现源码

文章目录 1.题目解析1.1 分而治之&#xff0c;藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 ADC模块1.3.3 IIC模块1.3.4 UART模块1.3.5 LCD模块1.3.6 LED模块1.3.7 TIM模块 2.源码3.第七届题目 前言&#xff1a;STM32G431RBT6实现嵌入式组第七届题目解析源码&…

DeepSeek技术名词全解析:一场属于中国AI的“觉醒时刻”

在2025年的人工智能浪潮中&#xff0c;一个名为DeepSeek的中国团队&#xff0c;用一系列技术突破改写了全球AI竞争的叙事。从“顿悟时刻”到“群体策略优化”&#xff0c;从“冷启动”到“长链思考”&#xff0c;这些晦涩的技术术语背后&#xff0c;是一场关乎人类智能边界的革…

【Go语言圣经1.1】

目标 学习Go 的编译方式、包的组织方式以及工具链的统一调用方式 概念与定义 package Go 语言通过包来组织代码。包类似于其它语言的库librarries或模块modules&#xff0c;每个包通常对应一个目录&#xff0c;目录中的所有 .go 文件都属于同一个包。特殊的 main 包 : 当代码…

主流大语言模型中Token的生成过程本质是串行的

主流大语言模型中Token的生成过程本质是串行的 flyfish 1. 串行生成 自回归模型的核心逻辑&#xff1a; 大模型&#xff08;如GPT-2&#xff09;采用自回归架构&#xff0c;每个Token的生成必须基于已生成的完整历史序列。例如&#xff0c;生成“今天天气很好”时&#xff1a…

基于PySide6的CATIA零件自动化着色工具开发实践

引言 在汽车及航空制造领域&#xff0c;CATIA作为核心的CAD设计软件&#xff0c;其二次开发能力对提升设计效率具有重要意义。本文介绍一种基于Python的CATIA零件着色工具开发方案&#xff0c;通过PySide6实现GUI交互&#xff0c;结合COM接口操作实现零件着色自动化。该方案成…

Python——计算机网络

一.ip 1.ip的定义 IP是“Internet Protocol”的缩写&#xff0c;即“互联网协议”。它是用于计算机网络通信的基础协议之一&#xff0c;属于TCP/IP协议族中的网络层协议。IP协议的主要功能是负责将数据包从源主机传输到目标主机&#xff0c;并确保数据能够在复杂的网络环境中正…

Python实例:PyMuPDF实现PDF翻译,英文翻译为中文,并按段落创建中文PDF

基于PyMuPDF与百度翻译的PDF翻译处理系统开发:中文乱码解决方案与自动化排版实践 一 、功能预览:将英文翻译为中文后创建的PDF 二、完整代码 from reportlab.lib.pagesizes import letter from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

xunruicms失败次数已达到5次,已被禁止登录怎么处理?

针对遇到的“xunruicms失败次数已达到5次&#xff0c;已被禁止登录”的问题以下是几种处理方法&#xff1a; 开启开发者模式&#xff1a; 您可以开启开发者模式来忽略账号的禁止登录限制。具体操作步骤如下&#xff1a; 访问迅睿CMS的官方文档&#xff0c;找到如何开启开发者模…

复现 MODEST 机器人抓取透明物体 单目 ICRA 2025

MODEST 单目透明物体抓取算法&#xff0c;来自ICRA 2025&#xff0c;本文分享它的复现过程。 输入单个视角的RGB图像&#xff0c;模型需要同时处理深度和分割任务&#xff0c;输出透明物体的分割结果和场景深度预测。 论文地址&#xff1a;Monocular Depth Estimation and Se…

新手学习爬虫的案例

首先你的电脑上肯定已经安装了python,没安装的去官网安装,我使用的是Pycharm作为操作的IDE 环境准备 安装必要的库 爬虫需要用到requests和beautifulsoup4 使用命令行或者终端运行下面的命令 pip install requests beautifulsoup4 -i https://mirrors.aliyun.com/pypi/sim…

Octave3D 关卡设计插件

课程参考链接 这位大佬有在视频合集中有详细的讲解&#xff0c;个人体验过&#xff0c;感觉功能很强大 https://www.bilibili.com/video/BV1Kq4y1C72P/?share_sourcecopy_web&vd_source0a41d8122353e3e841ae0a39908c2181 Prefab资源管理 第一步 在场景中创建一个空物体…

【Transformer优化】Transformer的局限在哪?

自2017年Transformer横空出世以来&#xff0c;它几乎重写了自然语言处理的规则。但当我们在享受其惊人的并行计算能力和表征能力时&#xff0c;是否真正理解了它的局限性&#xff1f;本文将深入探讨在复杂度之外被忽视的五大核心缺陷&#xff0c;并试图在数学维度揭示其本质。 …

SpringBoot(一)--搭建架构5种方法

目录 一、⭐Idea从spring官网下载打开 2021版本idea 1.打开创建项目 2.修改pom.xml文件里的版本号 2017版本idea 二、从spring官网下载再用idea打开 三、Idea从阿里云的官网下载打开 ​编辑 四、Maven项目改造成springboot项目 五、从阿里云官网下载再用idea打开 Spri…