Maven - 5 分钟快速通关

目录

一、Maven

1.1、 基础语法

1.2、聚合

1.3、继承

1.4、自定义属性


一、Maven


1.1、 基础语法

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!--指定 pom 模型版本--><modelVersion>4.0.0</modelVersion><!--组织 id--><groupId>cn.itcast.demo</groupId><!--项目id--><artifactId>cloud-demo</artifactId><!--版本号: release(发行版本)  snapshot(开发版本)--><version>1.0</version><!--设置当前工程的所有依赖--><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.5.RELEASE</version></dependency></dependencies><!--构件--><build><!--设置插件--><plugins><!--具体的插件配置--><plugin></plugin></plugins></build>

a)坐标,Maven 中用于描述仓库资源的位置,如下构成:

  1. groupId:定义当前 Maven 项目组织名称,例如 com.mysql
  2. artifactId:定义当前 Maven 项目名称(通常时模块名称,例如 mysql-connector-java )
  3. version:定义当前项目的版本号.

b)依赖配置 dependencies,依赖当前项目运行所需的 jar 包,一个项目可以设置多个依赖dependency.

如果想要主动断开依赖资源(例如一个依赖的内部又连接了其他依赖),就可以使用 exclusion 来排除(要排除的依赖无需指定版本号).

        <dependency><groupId>cn.itcast.demo</groupId><artifactId>feign-api</artifactId><version>1.0</version><exclusions><exclusion><groupId>cn.itcast.demo</groupId><artifactId>feign-api</artifactId></exclusion></exclusions></dependency>

c)版本:

SNAPSHOT(快照版本):就是一个测试阶段的版本,会随着开发的进行不断更新.

RELEASE(发布版本): 项目开发到一个稳定的版本,即使进行功能的后续开发,也不会改变当前发布版本内容,这种版本就是发布版本.

1.2、聚合

概念:使用一个“总工程”(一般是父工程)将各个“模块工程”(一般是子工程)汇集起来,作为一个整体对应完整的项目。

好处:

  1. 一键执行 Maven 命令:很多构建命令都可以在“总工程”中一键执行
  2. 配置聚合之后,各个模块工程会在总工程中展示一个列表,让项目中的各个模块一目了然.

Ps:微服务项目中体现的淋漓尽致

使用方式如下:

a)在父工程中的 pom.xml 文件中,定义打包类型为 pom.

    <packaging>pom</packaging>

b)定义当前模块进行构件时关联的其他模块名称.

    <modules><module>user-service</module><module>order-service</module><module>eureka-server</module><module>feign-api</module><module>gateway</module></modules>

Ps:参与聚合的模块最终的执行顺序和模块间的依赖关系有关,与配置顺序无关.

1.3、继承

概念:A 模块(子工程)继承 B 模块(父工程),本质上就是 A 模块中的 pom.xml 文件继承了 B 模块的 pom.xml 文件.

好处:在每一个 module 中各自维护各自的依赖容易发生出入,不易管理,比如在父工程管理的所有模块中,他们因该使用通过一版本的 jar 包,却由于各自管理,容易出现出入.  因此我们可以在父工程中通过 <dependencyManagement> 标签定义好依赖规范,让这些子工程去继承他,这样,子工程再引入依赖时就无需指定版本号(会通过父工程管理依赖寻找所需版本).

使用方式如下:

a)在父工程中定义依赖管理.

    <dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.5.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

Ps:dependencyManagement 只是声明了依赖,并没有真正引入.

b)在子工程中声明父工程坐标与对应的位置

    <parent><artifactId>cloud-demo</artifactId><groupId>cn.itcast.demo</groupId><version>1.0</version><!--父工程的 pom 文件--><relativePath>../pom.xml</relativePath></parent>

c)在子工程引入依赖,版本参照父工程的依赖,因此无需指定版本.

        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

1.4、自定义属性

自定义属性,一般是为了统一管理依赖的版本号.  这就等同于定义变量,方便统一维护.

使用方式如下:

a)定义格式

    <properties><自定义名称>指定版本</自定义名称></properties>
    <properties><mysql.version>5.1.47</mysql.version><mybatis.version>2.1.1</mybatis.version></properties>

b)调用格式

        <dependencies><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency></dependencies>

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

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

相关文章

UE4和C++ 开发-C++与UMG交互3

打开一个游戏&#xff0c;最先进入眼帘的便是加载页面&#xff0c;然后便是ui界面&#xff0c;如开始游戏等等按钮。本文将介绍如何在UE4中将制作一个游戏菜单项。 1、在UE4中&#xff0c;有两种方式创建ui&#xff0c;一种是使用slate的方式&#xff0c;一种便是UMG&#xff…

大数据学习(8)-hive压缩

压缩 在Hive表中和计算过程中&#xff0c;保持数据的压缩&#xff0c;对磁盘空间的有效利用和提高查询性能都是十分有益的。 Hive表数据进行压缩 在Hive中&#xff0c;不同文件类型的表&#xff0c;声明数据压缩的方式是不同的。 1&#xff09;TextFile 若一张表的文件类型…

MVVM 与 MVC区别和应用场景?

MVVM 和 MVC 1. MVC2. MVVM 1. MVC MVC 是 Model View Controller 的缩写 Model&#xff1a;模型层&#xff0c;是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View&#xff1a;视图层&#xff0c;用户界面渲染逻辑&#xff0c;通常视图…

C#(Csharp)我的基础教程(三)(我的菜鸟教程笔记)-控件对象与窗体容器集合(Control)的探究与学习

目录 1、窗体类&#xff08;主代码文件窗体设计器后台代码文件&#xff09;2、控件对象与窗体容器集合&#xff08;Control&#xff09; 1、窗体类&#xff08;主代码文件窗体设计器后台代码文件&#xff09; 主窗体对象的创建&#xff1a;在Program类里面&#xff1a; Appli…

Spring Boot中的JdbcTemplate是什么,如何使用

Spring Boot中的JdbcTemplate是什么&#xff0c;如何使用 Spring Boot是一个流行的Java应用程序开发框架&#xff0c;它简化了Java应用程序的开发过程&#xff0c;并提供了丰富的功能和工具。在Spring Boot中&#xff0c;JdbcTemplate是一个强大的数据库访问工具&#xff0c;它…

【Python】PaddleOCR文字识别国产之光 从安装到pycharm中测试 (保姆级图文)

目录 官方项目地址Python环境搭建&#xff08;也就是使用Anaconda的python&#xff09;1. 安装Anaconda1. 打开终端并创建conda环境 安装PaddlePaddle&#xff08;CPU演示&#xff09;安装PaddleOCR whl包如果安装shapely库报错&#xff08;我没有报错&#xff0c;其他类似库安…

acwing算法基础之基础算法--位运算算法

目录 1 知识点2 模板 1 知识点 &#xff08;一&#xff09; n的二进制表示中第k位是0还是1&#xff0c;注意k从0开始编号。 先把第k位移动到最后一位&#xff0c;即n >> k看个位是几&#xff0c;即x & 1 综合上述&#xff0c;即n >> k & 1。 &#xff…

01 初识FPGA

01 初识FPGA 一.FPGA是什么 FPGA&#xff08;Filed Programmable Gate Array&#xff09;&#xff0c;现场可编程门阵列&#xff0c;一种以数字电路为主的集成芯片&#xff0c;属于可编程逻辑器件PLD的一种。 1.1 两大巨头 Xilinx(赛灵思)Altera&#xff08;阿尔特拉&#…

VPN基础

1.VPN简介 VPN即虚拟专用网&#xff0c;泛指通过VPN技术在公用网络上构建的虚拟专用网络。VPN用户在此虚拟网络中传输私网流量&#xff0c;在不改变网络现状的情况下实现安全、可靠的连接。 专用&#xff1a;VPN网络是专门供VPN用户使用的网络&#xff0c;对于VPN用户&#xf…

geecg-uniapp 同源策略 数据请求 获取后台数据 进行页面渲染 ui库安装 冲突解决(3)

一&#xff0c;同源策略 &#xff08;1&#xff09;首先找到env 要是没有env 需要创建一个替换成后端接口 &#xff08;2&#xff09;因为他封装了 先找到 http 请求位置一级一级找 然后进行接口修改 &#xff08;3&#xff09;appUpdata 修改接口 运行即可 &#x…

【postgresql】

看到group by 1&#xff0c;2 和 order by 1&#xff0c; 2。看不懂&#xff0c;google&#xff0c;搜到了Stack Overflow 上有回答 What does SQL clause “GROUP BY 1” mean? 大概意思就是&#xff0c;group by&#xff0c; order by 后面跟数字&#xff0c;指的是 selec…

dockerfile 搭建lnmp+wordpress,docker-compose搭建lnmp+wordpress

目录 dockerfile 搭建lnmpwordpress 部署nginx&#xff08;容器IP 为 172.18.0.10&#xff09; 部署mysql&#xff08;容器IP 为 172.18.0.20&#xff09; 部署php&#xff08;容器IP 为 172.18.0.30&#xff09; docker-compose搭建lnmpwordpress dockerfile 搭建lnmpword…

STM32单片机采用环形缓冲区实现串口中断数据接收管理

一、前言 在嵌入式系统开发中&#xff0c;与上位机进行串口通信是非常常见的场景。上位机可以通过串口发送指令或者数据给嵌入式设备&#xff0c;而嵌入式设备需要可靠地接收并解析这些数据&#xff0c;以执行相应的操作。然而&#xff0c;在串口通信过程中&#xff0c;上位机…

c++的小指针

1&#xff0c;关于QByteArray的代码&#xff0c;以下说法正确的是&#xff1f; QByteArray bytes; bytes[0] 1; bytes[1] 2; bytes[2] 3; bytes[3] 4; A&#xff1a;编译通过&#xff0c;运行正常。 B&#xff1a;编译通过&#xff0c;运行时QT抛出异常导致程序退出…

Error: error:0308010C:digital envelope routines::unsupported

这个错误通常发生在使用 Node.js 中的 TLS/SSL 模块时。它表示在尝试建立 TLS 连接时&#xff0c;无法识别或不支持远程服务器所使用的加密协议。 可能的原因包括以下几点&#xff1a; 远程服务器使用了不安全的加密算法或协议&#xff0c;而最新版本的 OpenSSL 已经将其移除…

如何实现前端路由保护?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

OpenCV实现图像傅里叶变换

傅里叶变换 dftcv.dft(img_float32,flagscv.DFT_COMPLEX_OUTPUT): flags:标志位&#xff0c;指定变换类型&#xff0c;cv.DFT_COMPLEX_OUTPUT会返回复数结果。 傅立叶变换&#xff0c;将输入的图像从空间域转换到频率域。 返回结果: 此函数返回一个复杂数值数组&#xff0c…

flutter 网络图片封装

可自定义加载时占位图片和加载失败时展示的图片 class ImageBuildView extends StatelessWidget {String? url;double radius;double? width;double? height;String placeholder;ImageBuildView({super.key,this.url,this.width,this.height,this.radius 50,this.placehol…

IOS 快速获取加密方法,加密数据

引言逆向过程中,被一个加密算法或者一段代码折磨。安卓没有办法,只能找IOS。 首先要看下,越狱检测能不能过,不过,然后看下几个屏蔽越狱的插件能不能行,如果可以,就可以走这条路。 实战先来这一段frida hook 代码: if (ObjC.available) {Interceptor.attach(Module.find…

初学者必看,前端 Debugger 调试学习

1.文章简介&#xff1a; 报错和Bug&#xff0c;是贯穿程序员整个编程生涯中&#xff0c;无法回避的问题。而调试&#xff0c;就是帮助程序员定位问题、解决问题的重要手段&#xff0c;因此调试是每个程序员必备技能。 调试本身可分为两个过程: 定位问题 和 解决问题&#xff0…