MAVEN利器:一文带你了解MAVEN以及如何配置
前言:
强大的构建工具——Maven。作为Java生态系统中的重要组成部分,Maven为开发人员提供了一种简单而高效的方式来构建、管理和发布Java项目。无论是小型项目还是大型企业级应用,Maven都能帮助开发人员轻松处理依赖管理、编译、测试和部署等任务。

文章目录
前言:
maven介绍:
maven的结构:
为什么需要maven?
如何配置maven?
总结:
maven介绍:
Maven是一个流行的Java构建工具和项目管理工具,由Apache软件基金会开发和维护。它为开发人员提供了一个简单而强大的方式来构建、管理和发布Java项目。Maven基于项目对象模型(Project Object Model,POM)的概念,通过一个XML文件将项目的依赖关系、构建配置和其他元数据进行描述。
Maven的主要功能包括依赖管理、项目构建、测试和部署。通过声明项目的依赖关系,Maven可以自动下载所需的库文件,并管理它们的版本。它使用约定的目录结构来管理项目代码、资源文件和配置文件,简化了项目的组织和维护。Maven还提供了一套强大而灵活的插件系统,可以扩展工具的功能。
maven的结构:
Maven的结构由中央仓库和私有仓库组成。
-
中央仓库:中央仓库是Maven的官方仓库,存储了大量的开源Java库和插件。它是默认的仓库,当Maven构建项目时,Maven会自动从中央仓库下载项目所需的依赖库。中央仓库具有广泛的覆盖范围,包含了许多常见的开发库和工具,例如JUnit、Log4j等。
-
私有仓库:私有仓库是由开发者或组织自行管理的仓库,在其中存储特定项目或机构的特定依赖库和插件。私有仓库允许开发人员将自己的库和插件上传到该仓库,并共享给团队成员或其他开发者使用。
Maven使用坐标(Coordinates)来标识依赖库和插件。坐标包括组织(Group)、名称(Artifact)、版本(Version)等信息,用于在仓库中唯一标识一个库或插件。
当Maven构建项目时,它会根据项目的POM文件中的依赖配置,从中央仓库或私有仓库下载所需的依赖库和插件。如果某个依赖在本地仓库中不存在,则Maven会自动从远程仓库下载,并缓存在本地仓库中供后续使用。
私有仓库通常用于存储内部开发的库、第三方商业库或特定版本的库等。为了使用私有仓库中的依赖库,开发人员需要在项目的POM文件中配置私有仓库的地址。
为什么需要maven?
-
依赖管理:Maven能够自动解决项目的依赖关系,并管理它们的版本。它可以自动下载和更新所需的库文件,简化了项目的依赖管理过程。
-
项目构建:Maven提供了一套标准化的构建生命周期和约定的目录结构,使得项目构建过程更加简洁、标准和可重复。开发人员只需定义好项目的POM文件,Maven就可以自动执行所需的构建任务。
-
插件生态系统:Maven拥有庞大的插件生态系统,可以扩展工具的功能。开发人员可以通过插件来执行各种任务,如代码检查、测试覆盖率分析、静态分析等,从而提高项目的质量和稳定性。
-
团队协作:Maven使用标准化的配置文件和依赖管理机制,简化了团队协作的难度。开发人员可以共享和重用项目的配置和依赖信息,提高团队开发效率。
-
跨平台性:由于Maven是基于Java的工具,因此它具有很好的跨平台性。开发人员可以在不同的操作系统上使用Maven进行项目构建和管理,如Windows、Mac和Linux等。
-
社区支持:Maven是一个开源项目,拥有庞大的社区支持。开发人员可以从社区中获取丰富的文档、教程和解决方案,解决问题和提升技能。
如何配置maven?
1.首先我们要在官网下载好maven压缩包:Maven – 下载 Apache Maven
windows的就下载红色箭头的这个版本
下载之后进行解压缩我们就可以得到这样一个文件:
- bin目录包含了执行Maven命令的可执行文件,允许你在命令行中运行Maven任务。
- boot目录包含了Maven的启动类加载器和相关文件,它们帮助Maven正确加载和启动。
- conf目录包含了Maven的配置文件,你可以在这里配置Maven的行为和设置。
- lib目录包含了Maven的依赖库文件,包括各种插件和组件。
2. 对conf目录中的setting做些许更改:
(1).添加私有仓库地址,用来存储库和插件

我们一般会选择在maven包的统计目录下创建一个文件夹,以此文件夹的地址作为私有仓库的地址,并添加到conf文件夹中的setting中

随便用一个编译器打开,这里我选择的是VS code
在55行添加如图所示内容,红色框中的为自己刚才确定的私有仓库的文件夹的地址。

(2).添加镜像地址,以此加速从中央仓库中下载库和插件,这里我们采用阿里的镜像地址
此操作仍然是在setting中

这里我写出来方便大家粘贴复制:
<mirror><id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>
此操作结束后,先保存输入内容,之后再关闭编辑文件。
3.将maven内的bin包的地址复制下来,添加到PATH系统环境变量中。

这么一套下来我们就成功的配置了maven到自己的计算机里面,如果想要验证,可以在cmd界面使用
mvn -v
进行验证
如果出现一下类似界面,就是配置成功:

总结:
Maven是一个强大的项目管理和构建工具,通过依赖管理、标准项目结构、构建生命周期和插件系统提供了高效的开发环境。配置Maven到计算机只需下载并设置环境变量,然后就可以利用其优势,自动解决依赖、管理项目结构、执行构建任务和添加插件。通过使用Maven,开发人员可以专注于业务开发,提高项目的可维护性和可靠性,无论项目规模大小都是有价值的工具。
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

相关文章:
MAVEN利器:一文带你了解MAVEN以及如何配置
前言: 强大的构建工具——Maven。作为Java生态系统中的重要组成部分,Maven为开发人员提供了一种简单而高效的方式来构建、管理和发布Java项目。无论是小型项目还是大型企业级应用,Maven都能帮助开发人员轻松处理依赖管理、编译、测试和部署等…...
解决 adb install 错误INSTALL_FAILED_UPDATE_INCOMPATIBLE
最近给游戏出包,平台要求 v1 签名吧,AS 打包后,adb 执行安装到手机,我用的设备是google pixel6 , android 系统 13, 提示如下: adb install -r v5_android_202308161046.apk Performing Streamed Install a…...
学习Vue:Event Bus 与 Provide/Inject
在Vue.js中,兄弟组件通信是指两个没有直接父子关系的组件之间如何进行数据传递和通信。为了实现兄弟组件通信,我们可以借助Vue的一些特性,如Event Bus和Provide/Inject。让我们一起来深入了解这些方法,并通过实例来看看如何实现兄…...
Java 工具类之JSON key根据ASCII排序
Java按键值字典序排列 参数按照KEY值进行字典序排序(按照KEY值的ASCII码从小到大),并用&作为各参数之间的分隔符将参数拼接成字符串。这里用到了SortedMap,复制以下代码开箱即用~ /*** getSortedString 对参数按照Key进行ASCII排序* param jsonObject 请求参数…...
深兰科技提出新多模态谣言监测模型,刷新世界纪录
近日,深兰科技旗下深兰科技科学院投稿的《基于二部特定事件树的分层表示的谣言检测》(Rumor Detection With Hierarchical Representation on Bipartite Ad Hoc Event Trees)研究论文被全球人工智能领域*期刊《IEEE Transactions on Neural Networks and Learning S…...
【从零学习python 】33.装饰器的作用(二)
文章目录 再议装饰器4. 装饰器(decorator)功能5. 装饰器示例例1:无参数的函数例2:被装饰的函数有参数例3:被装饰的函数有不定长参数例4:装饰器中的return例5:装饰器带参数 进阶案例 再议装饰器 # 定义函数:完成包裹数据 def makeBold(fn):def wrapped():return &qu…...
【自动电压调节器】无功功率控制的终端电压控制研究(Simulink)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
比ChatGPT更强的星火大模型V2版本发布!
初体验 测试PPT生成 结果: 达到了我的预期,只需要微调就可以直接交付,这点比ChatGPT要强很多. 测试文档问答 结果: 这点很新颖,现在类似这种文档问答的AI平台收费都贵的离谱,星火不但免费支持而且效果也…...
Character Animation With Direct3D 读书笔记
角色动画简介 2D动画:循环播放多张图片 3D动画: 骨骼动画、变形动画 DirectX入门 Win32 应用程序 Application类:处理主程序循环,图形设备的初始化 Init:加载资源并创建图形设备Update:更新游戏世界&am…...
SpringBoot之HandlerInterceptor拦截器的使用
😀前言 本篇博文是关于拦截器-HandlerInterceptor的使用,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动…...
【共同缔造 情暖襄阳】 暑期关爱未成年人志愿服务活动合集(三)
结合2023年襄阳市民政局“共同缔造 情暖襄阳”社会工作服务项目,在襄阳市民政局、襄州区民政局支持下,襄州社工协会联合肖湾街道育红社区开展暑期“希望家园”志愿服务活动,关爱未成年人。 8月4日,为培育孩子们广泛的兴趣爱好和动…...
私密相册管家-加密码保护私人相册照片安全
App Store史上最安全、最强大、最卓越的私密相册App!再也不用担心私密照片视频被别人看见了! 私密相册为你提供多重密码保护机制、简单便捷的照片存储空间,完美地将你的私密照片远离一切恶意偷窥者的窥探! 【产品功能】 √ 支…...
webpack 热更新的实现原理
webpack 的热更新⼜称热替换(Hot Module Replacement),缩写为HMR。这个机制可以做到不⽤刷新浏览器⽽将新变更的模块替换掉旧的模块。 原理: ⾸先要知道 server 端和 client 端都做了处理⼯作: 在 webpack 的 watch…...
OpenCV-Python中的图像处理-傅里叶变换
OpenCV-Python中的图像处理-傅里叶变换 傅里叶变换Numpy中的傅里叶变换Numpy中的傅里叶逆变换OpenCV中的傅里叶变换OpenCV中的傅里叶逆变换 DFT的性能优化不同滤波算子傅里叶变换对比 傅里叶变换 傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变…...
阿里云FRP内网穿透挂载多台服务器
1. FRP介绍 FRP (Fast Reverse Proxy) 是比较流行的一款。FRP 是一个免费开源的用于内网穿透的反向代理应用,它支持 TCP、UDP 协议, 也为 http 和 https 协议提供了额外的支持。你可以粗略理解它是一个中转站, 帮你实现 公网 ←→ FRP(服务器…...
多店铺功能
(一) 系统管理:菜单权限、前台菜单、角色管理、职员管理、登录日志、操作日志、图片空间、商城消息、风格设置、计划任务 (二) 基础设置:商城配置、导航管理、广告管理、广告位置、银行管理、支付管理、地区管理、友情链接、快递管理、消息模板 (三) 会员…...
mysql主从复制搭建(一主一从)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言MySQL复制过程分为三部: 一、准备工作二、配置>主库Master三、配置>从库SlaveSlave_IO_Running: YesSlave_SQL_Running: Yes 四、测试至此&am…...
什么是Liquid UI?
热门议题: 1、企业如何快速解决人员移动办公的需求,比如在苹果安卓手机,平板电脑,MAC登录SAP。2、企业如何解决用户经常抱怨的流程复杂,操作繁琐,难以使用等问题 公司介绍: Synactive,Inc. 是…...
非常详细的相机标定(六)(2维坐标点转为3维坐标点)
根据提取的相机的参数,2维坐标点转为3维坐标点,代码如下: import argparse from argparse import RawTextHelpFormatter import numpy as np import cv2# 寻找焦点 def cam_calib_find_corners(img, rlt_dir, col, row):# 灰度化图片&#x…...
云计算虚拟仿真实训平台
一、云计算虚拟仿真系统概述 云计算虚拟仿真系统是一种基于云计算技术和虚拟化技术的系统,用于实现各种仿真和模拟任务。它可以提供强大的计算能力和资源管理,为用户提供灵活、高效、可扩展的仿真环境。 该系统通常由一组服务器、网络和存储设备组成&am…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
