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…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

在Zenodo下载文件 用到googlecolab googledrive
方法:Figshare/Zenodo上的数据/文件下载不下来?尝试利用Google Colab :https://zhuanlan.zhihu.com/p/1898503078782674027 参考: 通过Colab&谷歌云下载Figshare数据,超级实用!!࿰…...