Maven - 5 分钟快速通关

news2024/11/17 11:29:24

目录

一、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.coloradmin.cn/o/1084028.html

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

相关文章

RN(React Native)的应用程序在雷电模拟器可以运行,安卓真机运行失败问题解决记录

yarn react-native build-android打包的apk在真机安卓运行提示&#xff1a; Unable to load script . Make sure you re either running Metro ( run npx react - native start ) or that your bundle index . android . bundle is packaged correctly for release . jn…

基于JavaWeb+SpringBoot+Vue超市管理系统的设计和实现

基于JavaWebSpringBootVue超市管理系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发…

适合学生写作业的台灯有哪些?高品质学生读写台灯推荐

不得不说如今我国青少年儿童的近视率还是非常高的&#xff0c;据国家卫健委疾控局数据&#xff0c;我国儿童青少年总体近视率为52.7%&#xff0c;其中6岁儿童为14.3%&#xff0c;小学生为35.6%&#xff0c;初中生为71.1%&#xff0c;高中生为80.5%&#xff0c;造成近视的原因不…

PLC编程速成(二)

目录 操作符 什么是操作符&#xff1f; 变量表&#xff08;数据类型&#xff09; 常用的类型&#xff1a; 变量表图 设置复位指令 如何重复双线圈与解决复双线圈问题&#xff1f; 解决复双线圈 ​编辑 重复双线圈 置复位指令&#xff08;有置位就存在复位&#xff09;…

声量暴涨130%,小红书「待爆」赛道创作指南

近年来&#xff0c;小红书影视板块展现出了旺盛的生命力。热门赛道逼近饱和的当下&#xff0c;内容如何不断推陈出新&#xff0c;成为营销困局。 本期&#xff0c;千瓜将锁定蓄势待发的影视板块&#xff0c;梳理“影视”内容打造方式&#xff0c;助力品牌开疆扩土&#xff0c;抢…

【图像误差测量】测量 2 张图像之间的差异,并测量图像质量(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

离散数学 学习 之 递推方程和生成函数

递推方程 注意这里的特征根一定不是相等 特解的话一般要去设出基本的形式 这是0 次多项式 生成函数

Kepler.gl笔记:地图交互

1 双图 点第一个图标&#xff0c;进入双图 双图可以选择各自显示哪些layer 2 2D图转3D图 点击第二个图标 鼠标拖拽是控制位置 ctrl鼠标拖拽是旋转 3 显示图例

10_博客管理系统

1 项目展示 Express框架可以开发各种不同类型的项目&#xff0c;博客管理系统&#xff08;Blog Management System&#xff09;就是一个比较典型的项目。许多热爱分享技术的程序员都在建立自己的博客&#xff0c;用来发表一些技术文章。 主要完成用户登录、用户管理、文章管理…

Go 循环之for循环,仅此一种

Go 循环之for循环&#xff0c;仅此一种 文章目录 Go 循环之for循环&#xff0c;仅此一种一、for 循环介绍二、for 循环结构2.1 基本语法结构2.2 省略初始值2.3 省略初始语句和结束语句2.4 无限循环2.5 for 循环支持声明多循环变量2.6 小练习&#xff1a;打印九九乘法表 三、for…

随机颜色生成器

项目需求&#xff1a; 要求随机生成颜色 HEX编码格式 快速了解色彩原理可查看&#xff1a;https://zhuanlan.zhihu.com/p/583033395 function randColor(){$str #;for($i 0; $i < 6; $i){ //对应HEX编码六位字符$randNum rand(0,15);switch ($randNum) {case 10: $ran…

2、TCP协议基础

TCP协议基础 1、3次握手建立连接 SYN表示建立连接的标志位&#xff0c;ACK为应答标志位 #mermaid-svg-XQE5icHJvP0vkGP4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-XQE5icHJvP0vkGP4 .error-icon{fill:#55222…

js精度问题

1、问题场景&#xff1a;请求接口取得Number类型的数字和后端实际值不一致 比如&#xff1a; 后端返回10976458979374929&#xff0c;实际从接口拿到的是10976458979374928&#xff0c;在控制台也会得到这样的结果&#xff1a; 原因&#xff1a; 在JavaScript中&#xff0c;N…

Seata入门系列【5】事务分组原理及应用案例详解

1 事务分组 1.1 概念 事务分组&#xff1a;seata的资源逻辑&#xff0c;可以按微服务的需要&#xff0c;在应用程序&#xff08;客户端&#xff09;对自行定义事务分组&#xff0c;每组取一个名字。 例如以下配置中&#xff0c;定义了当前事务分组名为${spring.application.…

凉鞋的 Unity 笔记 108. 第二个通识:增删改查

在这一篇&#xff0c;我们来学习此教程的第二个通识&#xff0c;即&#xff1a;增删改查。 增删改查我们不只是一次接触到了。 在最先接触的场景层次窗口中&#xff0c;我们是对 GameObject 进行增删改查。 在 Project 文件窗口中&#xff0c;我们是对文件&文件夹进行增删…

Elasticsearch —索引性能技巧

目录 一、科学的测试性能 二、使用批量请求并调整其大小 三、存储 四、段和合并 五、其他 如果你是在一个索引负载很重的环境&#xff0c;比如索引的是基础设施日志&#xff0c;你可能愿意牺牲一些搜索性能换取更快的索引速率。在这些场景里&#xff0c;搜索常常是很少见的…

数据结构题型17-树、森林

文章目录 1 树转换为二叉树2 森林转换为二叉树3 二叉树转换为树4 二叉树转换为森林 1 树转换为二叉树 参考博客&#xff1a;如何将一棵树转化成二叉树 2 森林转换为二叉树 参考博客&#xff1a;树、森林与二叉树的转换 3 二叉树转换为树 参考博客&#xff1a;树、森林与…

开山之作 | YOLOv1算法超详细解析(包括诞生背景+论文解析+技术原理等)

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。目标检测是计算机视觉领域的一项重要研究方向&#xff0c;它在许多应用领域中都得到了广泛应用&#xff0c;如人脸识别、物体识别、自动驾驶、视频监控等。在过去&#xff0c;目标检测方法主要采用基于RCNN、Fast R-CNN等深…

软件工程与计算总结(九)软件体系结构基础

目录 ​编辑 一.体系结构的发展 二.理解体系结构 1.定义 2.区分体系结构的抽象与实现 3.部件 4.连接件 5.配置 三.体系结构风格初步 1.主程序/子程序 2.面向对象式 3.分层 4.MVC 一.体系结构的发展 小规模编程的重点在于模块内部的程序结构非常依赖于程序设计语言…

学网络安全的过程 ,差点要了我的命

我真的好像感慨一下&#xff0c;这个世界真的给计算机应届生留活路了吗&#xff1f; 看着周围的同学&#xff0c;打算搞前端、JAVA、C、C的&#xff0c;一个两个去跑去应聘。你以为是00后整治职场&#xff1f; 真相是主打一个卑微&#xff1a;现阶段以学习为主&#xff08;工资…