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…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...