01Maven的工作机制: Maven作为依赖管理工具以及Maven作为构建管理工具

news2024/12/24 8:10:34

Maven的特点及其应用

Maven 是 Apache 软件基金会组织维护的一款专门为Java项目提供构建和依赖管理支持的工具

Maven 作为依赖管理工具

管理jar包的规模: 随着我们使用的框架数量越来越多以及框架的封装程度也越来越高,项目中使用的jar包也就越来越多

  • 配置工程依赖的详细信息可以根据关键词到Maven仓库查询 , 根据下载量选择适合的使用

使用SpringBoot、SpringCloud框架中的Nacos服务注册发现, Web框架环境 , Thymeleaf视图模板技术功能

  • 如果不使用Maven最终需要导入106个jar包
  • 如果使用Maven来引入这些 jar 包只需要配置三个依赖
org.springframework.security:spring-security-rsa:jar:1.0.9.RELEASE:compile  
com.netflix.ribbon: ribbon:jar:2.3.0:compile  
org.springframework.boot:spring-boot-starter-thymeleaf:jar:2.3.6.RELEASE:compile  
commons-configuration:commons-configuration:jar:1.8:compile  
....................

<!-- Nacos服务注册发现启动器 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- web启动器依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 视图模板技术thymeleaf -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

管理jar包的来源: jar包的下载比较麻烦

  • 从jar包所属技术的官网下载,官网通常是英文界面,网站的结构又不尽相同,甚至找到下载链接还发现需要通过特殊的工具下载

  • 从第三方网站下载jar包 , 在使用过程中会出现jar包的名称和版本以及jar包内的具体细节等各种问题

  • 使用Maven后依赖对应的jar包能够自动下载,方便快捷又规范

管理jar包之间的依赖关系: 框架中使用的jar包不仅数量庞大,而且彼此之间存在错综复杂的依赖关系 , 另外jar包之间有可能产生冲突

  • 如果A工程里面用到了B工程的类、接口、配置文件等等这样的资源,那么我们就可以说A依赖B,如thymeleaf-3.0.12.RELEASE依赖ognl-3.1.26
  • 如果要由程序员手动梳理无疑会增加极高的学习成本,而这些工作又对实现业务功能毫无帮助
  • 使用Maven则几乎不需要管理这些关系,极个别的地方调整一下即可,极大的减轻了我们的工作量

依赖管理中要解决的具体问题

  • jar 包的下载:使用 Maven 之后,jar 包会从规范的远程仓库下载到本地
  • jar 包之间的依赖:通过依赖的传递性自动完成
  • jar包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入

Maven作为构建管理工具

你可以不使用Maven但是构建必须要做, 当我们使用IDEA进行本地开发时,构建是IDEA替我们做的 , 如果脱离IDE环境执行构建操作此时则需要专门工具
在这里插入图片描述

构建指的是使用原材料生产产品的过程环节: 如使用Java源代码,Thymeleaf文件,图片,配置文件生成一个可以在服务器上运行的项目

  • 清理:删除上一次构建的结果,为下一次构建做好准备
  • 编译:将Java源程序编译成 *.class 字节码文件
  • 测试:运行提前准备好的测试程序
  • 报告:针对刚才测试的结果生成一个全面的信息
  • 打包: Java工程(jar包) , Web工程(war包)
  • 安装:把一个Maven工程经过打包操作生成的jar包或war包存入Maven仓库
  • 部署: 把一个jar包部署到Nexus私服服务器上或借助相关Maven插件(如cargo),将war包部署到Tomcat服务器上

Maven的工作机制

在这里插入图片描述

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

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

相关文章

自动化测试 —— Pytest fixture及conftest详解!

前言 fixture是在测试函数运行前后&#xff0c;由pytest执行的外壳函数。fixture中的代码可以定制&#xff0c;满足多变的测试需求&#xff0c;包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在&#xff0c;类似u…

单值二叉树的判断——递归

如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 根左右 ——递归 代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int v…

RobotFramework自动化测试框架的基础关键字

1.1.1 如何搜索RobotFramework的关键字 有两种方式可以快速的打开RIDE的关键字搜索对话框 1、选择菜单栏Tools->Search Keywords&#xff0c;然后会出现如下的关键字搜索对话框&#xff0c;这个对话框就类似提供了一个关键字的API的功能&#xff0c;提供了关键字的…

K8S:HPA pod水平自动伸缩

文章目录 一.HPA概念1.什么是HPA2.HPA原理 二.部署 metrics-server1.node节点上传镜像包2.master节点安装metrics-server 三.部署 HPA1.所有节点安装镜像2.master创建测试的 Pod 资源3.创建 HPA 控制器4.创建测试客户端容器5.弹性缩容 四.扩展1.资源限制 - Pod①资源限制的原理…

快速排序详解(递归实现与非递归实现)

目录 一、快速排序的基本思想 二、将序列划分成左右区间的常见方法 2.1hoare版本&#xff08;动图解释代码实现&#xff09; 2.2挖坑法 2.3前后指针法 三、快速排序的初步实现 四、快速排序的优化实现 4.1快排的特殊情况 4.2对区间划分代码的优化 4.3小区间优化 五、…

邮政编码,格式校验:@ZipCode(自定义注解)

目标 自定义一个用于校验邮政编码格式的注解ZipCode&#xff0c;能够和现有的 Validation 兼容&#xff0c;使用方式和其他校验注解保持一致&#xff08;使用 Valid 注解接口参数&#xff09;。 校验逻辑 有效格式 不能包含空格&#xff1b;应为6位数字&#xff1b; 不校验…

5G安卓核心板-MT6833/MT6853核心板规格参数

随着智能手机的不断发展&#xff0c;芯片技术在推动手机性能和功能方面发挥着关键作用。MT6833和MT6853安卓核心板是两款高度集成的基带平台&#xff0c;为LTE/5G/NR和C2K智能手机应用提供强大的处理能力和多样化的接口。 这两款安卓核心板都集成了蓝牙、FM、WLAN和GPS模块&…

CSS网页标题图案和LOGO SEO优化

favicon图标 将网页的头名字旁边放入一个图案 想将想要的图案切成png图片 然后把png图片转换成ico图案可以借助进行访问 将语法引用到head里面 SEO译为搜索引擎优化。是一种利用搜索引擎的规则提高网站有关搜索引擎的自然排名的方式 SEO的目的是对网站进行深度的优化&…

SQL Server 创建表

切换数据库&#xff0c;判断是否存在 --切换数据库 use DBTEST--判断表是否存在 --创建的所有表都可以在sys.boject中找到&#xff0c;所以这里在sys.objects中查找是否有名字为department的表并且type为U 即用户生成的表 if exists(select * from sys.objects where namedepa…

轻松制作SOP作业指导书:掌握流程,节省时间

企业启用标准作业程序sop能够将企业生产作业的操作步骤、技术经验以及要求用统一的格式描述记录下来&#xff0c;以此规范和指导日常的工作&#xff0c;sop这种形式对企业的长远发展和精益化生产有能够带来巨大的帮助。 制作sop作业指导书其一&#xff0c;能够把企业的技术、经…

uniapp +vue3 练习 首页页面展示 我的页面展示 登录展示 拨打固定的电话 页面跳转

uniapp拨打固定的电话 function Hotline() {// 拨打电话uni.makePhoneCall({phoneNumber: 19969547693})}页面跳转 //普通跳转function homepage() {uni.navigateTo({url: /pages/homepage/homepage});}//二、uni.redirectTo关闭当前页面&#xff0c;跳转到应用内的某个页面。…

图像滤波总结

中值滤波器 中值滤波器是一种常用的非线性滤波器&#xff0c;其基本原理是&#xff1a;选择待处理像素的一个邻域中各像素值的中值来代替待处理的像素。主要功能使某像素的灰度值与周围领域内的像素比较接近&#xff0c;从而消除一些孤立的噪声点&#xff0c;所以中值滤波器能够…

使用clip-path来画不同的形状,三角形,多边形,菱形,六边形等等

介绍 单词"clip path"的直译过来就是&#xff1a;裁剪路径 clip-path CSS 属性可以创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示&#xff0c;区域外的隐藏。剪切区域是被引用内嵌的 URL 定义的路径或者外部 SVG 的路径。 也就是说&#xff0c…

LeetCode【11】 盛水最多的容器

题目&#xff1a; 分析&#xff1a; 1、双指针&#xff0c;储水为&#xff08;R-L &#xff09;* 二者较小高度&#xff0c;如题目&#xff0c;(9-2)* 7 49 2、双指针向中间靠&#xff0c;每次移动较矮的指针。 代码&#xff1a; public int maxArea(int[] height) {int l…

STC89C51基础及项目第15天:小车测速、添加语言识别控制

1. 小车测速的原理&#xff08;281.126&#xff09; 测速模块 用途&#xff1a; 广泛用于电机转速检测&#xff0c;脉冲计数,位置限位等。 逻辑&#xff1a; 有遮挡&#xff0c;输出高电平&#xff1b;无遮挡&#xff0c;输出低电平 接线 VCC 接电源正极 3.3 - 5VGND 接电源负…

YOLOv7改进:极简的神经网络模型 VanillaNet---VanillaBlock助力检测,实现暴力涨点 | 华为诺亚2023

💡💡💡本文属于原创独家改进:极简模块VanillaBlock,以极简主义的设计为理念,网络中仅仅包含最简单的卷积计算,去掉了残差和注意力模块,二次创新引入到YOLOv7中取得了不俗的效果。 极简模块VanillaBlock | 亲测在多个数据集实现涨点; 收录: YOLOv7高阶自研专…

【JAVA】最容易忽视的数据类型——枚举

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 前言 Java枚举是一个特殊的类一般表示一组常量,比如一年的 4个季节,一年的 12 个月份,一个星期的7天,方向有东南西北等。今天就让我们来学习一下在JAVA中这个特殊的类。 枚举 枚举是一…

LeetCode: 1395. 统计作战单位数

目录 1. 解法一&#xff1a;枚举中点 2. 解法二&#xff1a;树状数组 离散化 优化解法一 原题链接&#xff1a;1395. 统计作战单位数 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。 每 3 个士…

【JWT】快速了解什么是jwt及如何使用jwt

一、导言 1、什么是jwt及组成部分 JWT&#xff08;JSON Web Token&#xff09;是一种用于在网络应用间安全传递声明&#xff08;claim&#xff09;的开放标准。它由三部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷&#xff08;Payload&#xff09;和签名&…

ARM 按键控制 LED灯,蜂鸣器,风扇

main.c: #include "uart.h" #include "key_it.h" int main() {all_led_init();uart4_init();//串口初始化//中断初始化key_it_config();key3_it_config();buzzer_init();fan_init();while(1){//保证主程序不结束}return 0; }src/key_it.c: #include"…