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

Maven的特点及其应用

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

Maven作为依赖管理工具

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

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

使用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
  • 由程序员手动梳理jar包之间的依赖关系无疑会增加极高的学习成本,而这些工作又对实现业务功能毫无帮助
  • 使用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.rhkb.cn/news/159662.html

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

相关文章

Qt QMovie和QLabel配合播放GIF表情包

文章目录 效果演示main函数创建MoviePlayer对象头文件movieplayer.h源文件movieplayer.cpp代码解释在Qt框架中,QMovie是用于处理动画和视频的类。所有源码已在本篇文章公布。 效果演示 main函数创建MoviePlayer对象 #include <QApplication>#include "movie

至强服务器BIOS/UEFI驱动开发笔记

至强服务器BIOS/UEFI驱动开发笔记 驱动开发基础Hello UEFI Driver 项目选择项目位置初始化驱动代码文件结构驱动程序入口和基本功能导入AMI工程AMI平台Hello UEFI Driver 编译问题测试结果打印设备列表继续开发`HelloWorldSupported`函数依赖配置使用脚本编译编译测试此DXE驱动…

RCNN系列网络的理解

R-CNN 作者 &#xff1a; Ross Girshick FAST R-CNN 作者 &#xff1a; Ross Girshick FASTER R-CNN 作者 &#xff1a; Jian Sun MASK R-CNN 作者 &#xff1a;kaiming he 一…

kong 和konga网关部署及使用

Kong是一款基于OpenResty&#xff08;Nginx Lua模块&#xff09;编写的高可用、易扩展的&#xff0c;由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的&#xff0c;能提供易于使用的RESTful API来操作和配置API管理系统&#xff0c;…

使用XLua在Unity中获取lua全局变量和函数

1、Lua脚本 入口脚本 print("OK") --也会执行重定向 require("Test") 测试脚本 print("TestScript") testNum 1 testBool true testFloat 1.2 testStr "123"function testFun()print("无参无返回") endfunction te…

Android Framework通信:Handler

文章目录 前言一、Handler源码分析1、创建Handler2、发送消息3、取消息4、消息处理5、线程切换的方法&#xff08;Handler异步消息处理机制流程&#xff09;handler.sendMessage()handler.post()View.post()Activity中的runOnUiThread() 二、Handler高频面试题1、为什么要有Han…

React TreeSelect设置默认展开项的方法

需要实现TreeSelect组件的onTreeExpand、treeExpandedKeys方法。 代码样例如下&#xff1a; 1.TreeSelect标签部分 render() {const {codeselect} this.props;const {treeExpandedKeys} this.state ................<TreeSelectshowSearch{false}dropdownStyle{{ maxHei…

Java架构师缓存架构设计解决方案

目录 1 缓存常见的三大问题1.1 缓存雪崩1.2 缓存穿透1.3 缓存击穿2 缓存key的生成策略3 热点数据集中失效的问题4 如何提高缓存的命中率5 缓存和数据库双写不一致的问题6 如何对缓存数据进行分片想学习架构师构建流程请跳转:Java架构师系统架构设计 1 缓存常见的三大问题 缓…

分布式事务协调中间件---seata快速入门

分布式事务 Seata&#xff0c;之前叫做Fescar&#xff0c;是一个开源的分布式事务解决方案&#xff0c;它主要致力于提供高效和简单的分布式事务服务。Seata主要用于解决微服务架构下的数据一致性问题。 Seata 的基本原理是基于两阶段提交 (2PC) 以及三阶段提交 (3PC)&#xff…

私域社群团购直播活动报名小程序开发

新零售SaaS系统&#xff0c;一款超级好用的私域社交团购小程序。支持团购、直播&#xff0c;有统计、收款、发货等功能。直播配合开团转化率更高&#xff0c;一款真正的私域卖货神器。 社交化电商用户踊跃参与&#xff1a;在卖货的同时&#xff0c;体现众多消费者的参与动态更…

C语言---预处理详解

1.预定义符号 在C语言中有一些内置的预定义符号 __FILE__ __LINE__ __DATE__ __TIME__ __STDC__//进行编译的源文件 //文件当前的行号 //文件被编译的日期 //文件被编译的时间 //如果编译器遵循ANSI C&#xff0c;其值为1&#xff0c;否则未定义 编译器在__STDC__报错,说明,v…

回归预测 | MATLAB实现CNN-LSSVM基于卷积神经网络-最小二乘支持向量机的数据回归预测(多指标,多图)

回归预测 | MATLAB实现CNN-LSSVM基于卷积神经网络-最小二乘支持向量机的数据回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现CNN-LSSVM基于卷积神经网络-最小二乘支持向量机的数据回归预测&#xff08;多指标&#xff0c;多图&#xff09;…

小程序框架语法详解以及页面生命周期的代码预演

目录 一、框架简介 二、视图层 2.1 简介 2.2 WXML语法演示 2.2.1 数据绑定 2.2.2 列表渲染 2.2.3 条件渲染 2.2.4 模板 2.3 事件系统 2.4 页面一级菜单展示及切换 2.5 a页面跳b页面界面内部按钮演示 2.6 a页面跳c页面&#xff08;不在一级菜单内的页面&#xff09;…

Webpack和JShaman相比有什么不同?

Webpack和JShaman相比有什么不同&#xff1f; Webpack的功能是打包&#xff0c;可以将多个JS文件打包成一个JS文件。 JShaman专门用于对JS代码混淆加密&#xff0c;目的是让JavaScript代码变的不可读、混淆功能逻辑、加密代码中的隐秘数据或字符&#xff0c;是用于代码保护的…

想要精通算法和SQL的成长之路 - 滑动窗口和大小根堆

想要精通算法和SQL的成长之路 - 滑动窗口和大小根堆 前言一. 大小根堆二. 数据流的中位数1.1 初始化1.2 插入操作1.3 完整代码 三. 滑动窗口中位数3.1 在第一题的基础上改造3.2 栈的remove操作 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 大小根堆 先来说下大小根堆是什…

NPM 常用命令(十二)

目录 1、npm unpublish 1.1 使用语法 1.2 描述 2、npm unstar 2.1 使用语法 3、npm update 3.1 使用语法 3.2 描述 3.3 示例 插入符号依赖 波浪号依赖 低于 1.0.0 的插入符号依赖 子依赖 更新全局安装的包 4、npm version 4.1 使用语法 5、npm view 5.1 使用语…

LLMs的终局是通用人工智能AGI总结 生成式AI和大语言模型 Generative AI LLMs

终于学完了 生成式AI和大语言模型 Generative AI & LLMs. LLMs 解决了如下问题&#xff1a; 对NLP的不能够理解长句子&#xff0c;解决方案 自注意力机制Transformers architecture Attention is all you need大模型算力不够&#xff0c;解决方案 LLMs 缩放法则和计算最…

电商爬虫API快速入门指南

​电子商务爬虫API​是一个公共数据爬虫API&#xff0c;旨在通过大多数电子商务网站收集大量实时本地化数据并搜索信息。这个数据收集工具作为一个值得信赖的解决方案&#xff0c;实现通过最复杂的电子商务网站收集公共信息。电子商务爬虫API适用于商业用例&#xff0c;诸如价格…

数据结构 - 2(顺序表10000字详解)

一&#xff1a;List 1.1 什么是List 在集合框架中&#xff0c;List是一个接口&#xff0c;继承自Collection。 Collection也是一个接口&#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下所示&#xff1a; Iterable也是一个接口&#xff0c;Iterabl…

加入鲲鹏HPC训练营,一起引领高性能计算新潮流

随着科学技术的迅猛发展&#xff0c;高性能计算&#xff08;HPC&#xff09;已经成为各行各业的核心竞争力之一。在这个数字化时代&#xff0c;高性能计算对于解决大数据分析、人工智能、模拟计算等领域的复杂问题至关重要。 所谓HPC&#xff0c;就是一个计算机集群系统&#x…