Maven高级学习笔记

分模块设计

为什么分模块设计?将项目按照功能拆分成若干个子模块,方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。

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

继承

  • 概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。
  • 作用:简化依赖配置、统一管理依赖
  • 实现:<parent>...</parent>

继承关系实现

  1. 创建maven模块 tlias-parent,该工程为父工程,设置打包方式pom(默认jar)
  2. 子工程的pom.xml文件中,配置继承关系。
  3. 父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)

父工程

子工程

注意事项:

  • 在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的
  • relativePath指定父工程的pom文件的相对位置(如果不指定,将从本地仓库/远程仓库查找该工程)
  • 若父子工程都配置了同一个依赖的不同版本,以子工程的为准。

版本锁定

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

注意事项:

  1. 子工程引入依赖时,无需指定<version>版本号,父工程统一管理。变更依赖版本,只需在父工程中统一变更
  2. 引入<dependencyManagement>只是统一管理该依赖的版本并不会把该依赖加入进来

自定义属性/引用属性

思考:<dependencyManagement><dependencies>的区别是什么?

  • <dependencies>是直接依赖,在父工程配置了依赖,子工程会直接继承下来。
  • <dependencyManagement>是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

聚合 

  • 聚合 

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

  • 聚合工程

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

  • 作用

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

如何完成聚合

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

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

继承与聚合

作用

  • 聚合用于快速构建项目
  • 继承用于简化依赖配置、统一管理依赖

相同点:

  • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
  • 聚合与继承均属于设计型模块,并无实际的模块内容

不同点:

  • 聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些
  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

私服

介绍:

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

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

资源的上传与下载

项目版本:

  • RELEASE(发行版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中
  • SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。

如何上传和下载私服中的依赖

1.设置私服的访问用户名/密码(settings.xml中的servers中配置)

2.IDEA的maven工程的pom文件中配置上传(发布)地址

3.设置私服依赖下载的仓库组地址(settings.xml中的mirrors、profiles中配置)

4.最后执行deploy这个生命周期就可以把依赖上传到私服

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

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

相关文章

[创业之路-423]:经济学 - 大国竞争格局下的多维博弈与科技核心地位

在当今风云变幻的国际舞台上&#xff0c;大国竞争已成为时代的主旋律&#xff0c;其激烈程度与复杂性远超以往。这场全方位的较量&#xff0c;涵盖了制度、思想、文化、经济、科技、军事等诸多关键领域&#xff0c;每一个维度都深刻影响着大国的兴衰成败&#xff0c;而科技在其…

【企业容灾灾备系统规划】

一、企业灾备体系 1.1 灾备体系 灾备切换的困境: 容灾领域的标准化方法和流程、算法体系是确保业务连续性和数据可靠性的核心,以下从标准框架、流程规范、算法体系三个维度进行系统分析: 1.1.1、标准化方法体系​ ​1. 容灾等级标准​ ​国际标准SHARE78​: 将容灾能力划…

Kafka Connect基础入门与核心概念

一、Kafka Connect是什么&#xff1f; Apache Kafka Connect是Kafka生态中用于构建可扩展、可靠的数据集成管道的组件&#xff0c;它允许用户将数据从外部系统&#xff08;如数据库、文件系统、API等&#xff09;导入Kafka&#xff08;Source Connector&#xff09;&#xff0…

从零手写Java版本的LSM Tree (四):SSTable 磁盘存储

&#x1f525; 推荐一个高质量的Java LSM Tree开源项目&#xff01; https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree&#xff0c;专为高并发写入场景设计。 核心亮点&#xff1a; ⚡ 极致性能&#xff1a;写入速度超…

Kotlin的5个主要作用域函数

applay, also,let, run, with 是kotlin标准库提供的5个主要的作用域函数&#xff08;Scope Functions&#xff09;​&#xff0c;它们的设计目的是为了在特定作用域内更简洁地操作对象。 如何使用这5个函数&#xff0c;要从它的设计目的来区分&#xff1a; apply : 配置/对象…

原型模式Prototype Pattern

模式定义 用原型实例指定创建对象的种类&#xff0c;并且通过复制这些原型创建新的对象&#xff0c;其允许一个对象再创建 另外一个可定制的对象&#xff0c;无须知道任何创建的细节 对象创建型模式 基本工作原理是通过将一个原型对象传给那个要发动创建的对象&#xff0c;这…

基于深度学习的智能交通流量预测系统:技术与实践

前言 随着城市化进程的加速&#xff0c;交通拥堵问题日益严重&#xff0c;给人们的日常生活和经济发展带来了巨大的挑战。智能交通系统&#xff08;ITS&#xff09;作为解决交通问题的重要手段&#xff0c;逐渐成为研究的热点。其中&#xff0c;交通流量预测是智能交通系统中的…

Cilium动手实验室: 精通之旅---23.Advanced Gateway API Use Cases

Cilium动手实验室: 精通之旅---23.Advanced Gateway API Use Cases 1. Lab说明1.1 高级网关 API 使用案例 2. 负载均衡器2.1 部署应用程序2.2 部署 Gateway 和 HTTPRoute 3. HTTP 标头请求修饰符3.1 部署 HTTPRoute3.2 可观测性 4. HTTP 响应标头重写5. HTTP 流量镜像5.1 demo应…

Agentic Workflow是什么?Agentic Workflow会成为下一个AI风口吗?

无论是想要学习人工智能当做主业营收&#xff0c;还是像我一样作为开发工程师但依然要运用这个颠覆开发的时代宠儿&#xff0c;都有必要了解、学习一下人工智能。 近期发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;入行门槛低&#x…

Some chunks are larger than 500 KiB after minification. Consider

在 vue3vite 项目开发中&#xff0c;build 打包时出现以下警告报错&#xff1a; (!) Some chunks are larger than 500 KiB after minification. Consider: - Using dynamic import() to code-split the application - Use build.rollupOptions.output.manualChunks to improve…

NodeJS11和10以及之前的版本,关键差异?

Node.js 11 相比 10&#xff08;及更早版本&#xff09;&#xff0c;除了事件循环行为的重大改变&#xff0c;还有多个核心模块和底层机制的升级。以下是它们的关键差异和新特性对比&#xff0c;帮助你快速掌握两个版本的重要变化。 &#x1f527; 一、事件循环行为变化&#x…

调和级数 敛散性

调和级数的敛散性是一个非常经典的问题。我们来全面分析它。 &#x1f9e0; 调和级数定义 调和级数是指&#xff1a; ∑ n 1 ∞ 1 n 1 1 2 1 3 1 4 ⋯ \sum_{n1}^{\infty} \frac{1}{n} 1 \frac{1}{2} \frac{1}{3} \frac{1}{4} \cdots n1∑∞​n1​121​31​41​⋯ …

Python•元组集合字符串

ʕ⸝⸝⸝˙Ⱉ˙ʔ ♡ 元组&#x1f6e5;️创建访问修改解包其他操作比较的依据 集合&#x1f6f8;创建添加和删除其他操作 字符串&#x1fa82;创建索引和切片基本操作连接加号join() 重复查找in 关键字index()find()startswith()endswith() ​​替换​​分割​​大小写删除 能…

​​信息系统项目管理师-项目整合管理 知识点总结与例题分析​​

​​一、项目整合管理概述​​ ​​1. 定义与重要性​​ 项目整合管理是项目管理知识领域中的核心过程,它协调所有其他知识领域的过程和活动,确保项目各要素有效整合。其核心目标是: ​​统一项目目标​​:确保各要素服务于共同目标​​协调冲突​​:解决项目执行中的各…

『uniapp』onThemeChange监听主题样式,动态主题不正确生效,样式被覆盖的坑

目录 问题示例代码解决思路1&#xff08;缺点影响显示效果有延迟&#xff09;解决思路2——通过路由刷新页面&#xff08;缺点只适用于部分网页&#xff09;解决思路3——vuex&#xff08;没学会~&#xff09;总结 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 欢迎关注 『…

LeetCode 高频 SQL 50 题(基础版)【题解】合集

点击下方标题可跳转至对应部分&#xff1a; LeetCode 高频 SQL 50 题&#xff08;基础版&#xff09;之 【查询】部分 LeetCode 高频 SQL 50 题&#xff08;基础版&#xff09;之 【连接】部分 上 LeetCode 高频 SQL 50 题&#xff08;基础版&#xff09;之 【连接】部分 下…

Jenkins 全面深入学习目录

Jenkins 全面深入学习目录 第一部分&#xff1a;Jenkins 基础入门 Jenkins 概述 持续集成/持续交付(CI/CD)概念Jenkins 的历史与发展Jenkins 与其他 CI/CD 工具的比较 Jenkins 安装与配置 系统要求与环境准备不同操作系统下的安装方法初始配置与安全设置插件管理系统 Jenkins…

安装laravel11和laravel12的一些报错问题解决

前言 今天在安装laravel的过程中遇到一些报错问题&#xff0c;记录一下。 laravel 12 Root composer.json requires laravel/tinker ^2.10.1, found laravel/tinker[2.x-dev] but it does not match your minimum-stability laravel/framework[v12.0.0, ..., v12.15.0] requ…

Oracle21cR3之客户端安装错误及处理方法

文章目录 Oracle21cR3客户端安装1. 下载2. 安装解压到指定位置&#xff0c;如下&#xff1a;2. 安装 3. 常见错误1. 无法将 JINSHENGYUAN\jinshengyuan 安装用户添加到 %2% 组。1. 问题原因分析2. 处理方法 Oracle21cR3客户端安装 1. 下载 官网下载 2. 安装 解压到指定位置…

web3 资讯网址

1. 新闻 币圈导航| 区块链导航| WEB3导航 | 聚合币圈交易所、行情工具、空投资讯、DeFi入口及行业动态&#xff0c;一站式区块链资源门户网站 2.github位置 https://github.com/itgoyo/awesome-crypto