JavaWeb学习路线(11)—— Maven延伸

news2024/11/26 16:28:49

一、分模块设计

(一)概念: 将项目按功能拆分出若干个子模块。

(二)作用: 方便项目管理维护、扩展,也方便模块间相互调用,资源共享。

(三)具体实现

1、抽取公共包作成模块(以pojo实体类为例)
在这里插入图片描述
2、向使用的项目添加依赖
在这里插入图片描述
3、向使用类中引用
在这里插入图片描述
(四)注意事项

  • 分模块设计需要先针对模块设计,再进行编码。

二、继承与聚合

(一)继承

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

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

3、实现方式: <parent> … </parent>

  • 设置父工程模块,通常设置打包方式为pom(默认jar包)
    • jar: 普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
    • war: 普通web程序打包,需要部署在外部的tomcat服务器中运行
    • pom: 父工程或聚合工程,该模块不写代码,仅依赖管理
<!--引入父工程-->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifacId>
	<version>2.7.5</version>
	<relativePath/> <!--从本地仓库查询-->
</parent>

<!--配置当前工程-->
<groupId>com.zengoo</groupId>
<artifactId>xxx-parent</artifacId>
<version>1.0-SNAPSHOT</version>
<pcakaging>pom</packaging>
  • 子工程的pom.xml文件中,配置继承关系
<parent>
	<groupId>com.zengoo</groupId>
	<artifactId>xxx-parent</artifacId>
	<version>1.0-SNAPSHOT</version>
	<!--配置引入目标工程的pom包-->
	<relativePath>../zengoo-parent/pom.xml</relativePath>
</parent>
  • 父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)

4、版本锁定

(1)作用: 对依赖进行版本管理。
(2)原始实现方式: 在父工程的pom.xml中通过<dependencyManagement>来统一管理依赖版本

<!--父工程配置版本-->
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>xxx</groupId>
			<artifactId>xxx</artifactId>
			<version>x.x.x</version>
		</dependency>
	</dependencies>
</dependencyManagement>
<!--子工程引入依赖-->
<dependencies>
	<dependency>
		<groupId>xxx</groupId>
		<artifactId>xxx</artifactId>
	</dependency>
</dependencies>

(3)优化使用:自定义属性列表

配置文件application.properties

<properties>
	<lombok.version>1.18.24</lombok.version>
	<jjwt.version>0.9.1</jjwt.version>
</properties>

父工程pom文件

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>xxx</groupId>
			<artifactId>xxx</artifactId>
			<version>${jjwt.version}</version>
		</dependency>
	</dependencies>
</dependencyManagement>

子工程pom文件

<dependencies>
	<dependency>
		<groupId>xxx</groupId>
		<artifactId>xxx</artifactId>
		<version>${jjwt.version}</version>
	</dependency>
</dependencies>

(二)聚合

1、作用: 将多个模块组合成一个整体,同时进行项目构建。(快速构建项目)

2、实现:

父工程(聚合工程)pom.xml

<moudles>
	<moudle>../xxx</moudle>
	<moudle>../xxx</moudle>
	<moudle>../xxx</moudle>
	<moudle>../xxx</moudle>
</moudles>

(三)继承与聚合的总结

  • 作用:
    • 聚合用于快速构建项目
    • 继承用于简化依赖配置、统一管理依赖
  • 相同点:
    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系只做到同一个pom文件中
    • 聚合与继承均属于设计型模块,并无实际模块内容
  • 不同点:
    • 聚合是在聚合工程中配置关系,聚合可以预设模块进行
    • 继承是在子模块中配置关系,父模块无法预设子模块继承

三、私服(Maven共享)

(一)概念: 私服是一种特殊的远程仓库,用来代理外部的中央仓库,用于解决团队内部资源共享与资源同步问题。

(二)使用私服

  • 步骤一:Maven的setting.xml中配置账户与密码
<server>
	<id>maven-releases</id> #发行版本仓库
	<username>admin</username>
	<password>admin</password>
</server>

<server>
	<id>maven-snapshot</id> #快照版本仓库
	<username>admin</username>
	<password>admin</password>
</server>
  • 步骤二:pom文件中配置上传地址
<distributionManagement>
	<repository>
		<id>maven-releases</id>
		<url>正式版本仓库仓库访问路径</url>
	</repository>
	<repository>
		<id>maven-snapshot</id>
		<url>快照版本仓库访问路径</url>
	</repository>
</distributionManagement>
  • 步骤三:设置私服依赖下载的仓库组地址(settings.xml)
<mirror>
		<id>maven-public</id>
		<mirrorOf>*</mirrorOf>
		<url>仓库组访问路径</url>
</mirror>
  • 步骤四:私服settings.xml中的profile属性下配置
<profile>
	<id>allow-snapshots</id>
	<activation>
		<activeByDefault>true</activeByDefault>
	</activation>
	<repositories>
		<repository>
			<id>maven-public</id>
			<url>仓库组访问路径</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>
</profile>

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

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

相关文章

深度学习项目实战二: LetNet5网络结构搭建

深度学习项目实战二: LetNet5网络结构搭建 文章目录 深度学习项目实战二: LetNet5网络结构搭建@[TOC](文章目录)一、卷积基本运算公式二、LetNet5网络1. 网络结构![在这里插入图片描述](https://img-blog.csdnimg.cn/0008fe6e5886414eac09eed49556ad99.png)2. 导入相关包3. 代码…

Apikit 自学日记:流程用例

添加普通用例 进入自动化测试用例管理页面&#xff0c;点击 添加用例 按钮&#xff0c;在弹窗中输入用例名称等信息&#xff0c;然后点击确定即可。 发起用例测试 创建好测试用例之后&#xff0c;点击 执行测试 按钮即可运行测试&#xff0c;系统会自动按顺序执行测试流程里的…

汽车下半年行情启动?概念全线爆发

2023年上半年&#xff0c;车市整体的基调是打价格战和加速“内卷”&#xff0c;在资本市场&#xff0c;汽车产业链相关概念股的表现整体也是不温不火。然而&#xff0c;下半年刚开始&#xff0c;汽车产业链股集体高调反弹。 7月4日&#xff0c;A股市场涨幅居前的概念板块几乎全…

MapstructPlus的快速集成

https://www.mapstruct.plus/https://www.mapstruct.plus/ # 博主技术栈如下 springboot:2.4.5 lombok:1.8.20 mapstruct-plus:1.3.4 knife4j:4.0.0目录 一、添加依赖&#xff08;谨防依赖冲突&#xff09; 二、如果依赖下不下来&#xff0c;要在maven的setting文件中加入腾讯…

NSS [SWPUCTF 2021 新生赛]no_wakeup

NSS [SWPUCTF 2021 新生赛]no_wakeup 先看题目&#xff0c;反序列化&#xff0c;绕过weakup。 exp&#xff1a; <?php class HaHaHa{public $admin;public $passwd;public function __construct(){$this->admin "admin";$this->passwd "wllm";…

【Python爬虫开发实战②】使用urllib以及jsonpath爬取即将上映电影信息

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;python网络爬虫从基础到实战 欢迎订阅&#xff01;后面的内容会越来越有意思~ &#x1f4a1;往期推荐&#xff1a; ⭐️首先&#xff0c;我们前面讲了多篇基础内容&…

【JUC并发编程】集合类安全问题

一、并发下&#xff0c;ArrayList类是不安全的 代码演示package CollectionSafe;import java.util.ArrayList; import java.util.List; import java.util.UUID;/*** author swaggyhang* create 2023-07-02 17:26*/ public class Test01 {public static void main(String[] arg…

ubuntu下 C/C++程序读取设置环境变量

设置环境变量很简单比如&#xff1a; export QMCY_LOCAL_PORT8888 追加的话 export QMCY_LOCAL_PORT$QMCY_LOCAL_PORT:8000 可以通过echo回显 读取的话 main函数多加一个env参数 一个字符串数组 然后遍历这个数组 即可 使用的时候 如下&#xff1a; bool QMCY_APP::Init(s…

【若依框架学习】day1-启动项目

若依开源框架&#xff0c;前后端分离项目&#xff0c;地址&#xff1a;http://doc.ruoyi.vip/ruoyi-vue/ 先配置环境 JDK1.8&#xff0c; MySQL5.7 &#xff0c;Maven3.6&#xff0c;redis、nginx(可以不配)、 node 具体见&#xff1a;https://ygstriver.blog.csdn.net/articl…

day28-JSP

0目录 JSP 1.为什么使用JSP 2.B/S和C/S的区别 3.URL 4.Tomcat 5.JSP实战综合项目 1.为什么使用JSP 1.1 JSP定义&#xff1a; &#xff08;1&#xff09;是一种动态网页技术 &#xff08;2&#xff09;Java Server Pages&#xff08;Java服务器端页面技术&#xff09; 1.2 …

docker进阶

Docker网络 [rootecs-56325218 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 2c63c1a8145c bridge bridge local 70d3439bbb55 host host local ffc74cf89143 none null local[rootecs-56325218 ~]# docker network cre…

day 42 01背包

01背包裸题 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。 每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 二维数组 dp含义&#xff1a; dp[ i ][ j ] 表示从下标为 [ 0 - i ]的物品里…

SpringBoot 整合RabbitMQ

SpringBoot 整合 RabbitMQ 概念 2007 年发布&#xff0c;是一个在 AMQP(高级消息队列协议)基础上完成的&#xff0c;可复用的企业消息系统&#xff0c;是当前最主流的消息中间件之一。 RabbitMQ是一个由erlang开发的AMQP&#xff08;Advanced Message Queue 高级消息队列协议…

Driver、CUDA、CUDNN和TensorRT的关系【深蓝学院】

文章目录 1、Driver、CUDA、CUDNN和TensorRT的关系2、如何选择CUDA版本2.1 如何选择CUDA版本的一个例子 3、手动安装实操 1、Driver、CUDA、CUDNN和TensorRT的关系 2、如何选择CUDA版本 上面的显卡架构及其对应的CUDA版本和稳定版本是怎么得出来的呢&#xff1f;请看下图&#…

【数据结构与算法】将含有n个元素的整数数组A[0…n-1]的元素循环右移1≤m<n)位。要求算法的空间复杂度为O(1)。

题目&#xff1a; Qestion:  设计一个算法 , 将含有 n 个元素的整数数组 A [ 0 … n − 1 ] 的元素循环右移 ( 1 ≤ m < n ) 位。要求算法的空间复杂度为 O ( 1 ) 设计一个算法,将含有n个元素的整数数组A[0…n-1]的元素循环右移(1≤m<n)位。要求算法的空间复杂度为O(1) …

[MySQL]MySQL数据库基础

[MySQL]MySQL数据库基础 文章目录 [MySQL]MySQL数据库基础1. 什么是数据库2. 主流数据库3. 服务器数据库表之间的关系4. 数据逻辑结构5. MySQL架构6. SQL语句分类7. 存储引擎 1. 什么是数据库 数据库是存储在计算机系统内的有结构的数据集合&#xff0c;是相关数据的集合&#…

【业务功能篇38】Springboot+activiti7 工作流引擎 增加网关组件、Assignment分配权限

在前面的一篇文章中&#xff0c;简单举例了一个 工单电子流&#xff0c;【业务功能篇36】Springbootactiviti7 工作流引擎_studyday1的博客-CSDN博客仅有一个子任务&#xff0c;这种一般是针对比较简单的一个遗留问题记录场景&#xff0c;今天再介绍一个&#xff0c;相对比较复…

rabbitMq怎么查看队列消息-Tracing日志

Trace 是Rabbitmq用于记录每一次发送的消息&#xff0c;方便使用Rabbitmq的开发者调试、排错。 1、启动Tracing插件 在RabbitMQ中默认是关闭的&#xff0c;需手动开启。此处rabbitMQ是使用docker部署的 ## 进入rabbitMq中 docker exec -it rabbitmq1 bash ## 启动日志插件 rabb…

每天五分钟机器学习:构建多特征的线性回归模型

本文重点 在实际应用中,有时候一个单一特征的线性回归模型可能无法很好地解释数据,因此我们可以构建多特征的线性回归模型来提高模型的预测能力。本文还是拿房价问题来举例,来看以下多特征的线性回归模型如何构建? 多特征的数据集 以房价预测为例,现在的样本特征不再是…

贵阳阿里云代理商:阿里云中国区副总裁李国欢:数字经济与实体经济如何融合

中国青年报客户端讯&#xff08;中青在线记者 于璧嘉&#xff09;6月21日&#xff0c;在第六届世界智能大会即将召开之际&#xff0c;阿里云中国区副总裁李国欢在接受媒体专访时表示&#xff1a;“数字经济已经成为社会生产力革命的一个重要生产要素。” 6月21日&#xff0c;阿…