Maven 概述、安装、配置、仓库、私服详解

news2025/6/12 17:17:33

目录

1、Maven 概述

1.1 Maven 的定义

1.2 Maven 解决的问题

1.3 Maven 的核心特性与优势

2、Maven 安装

2.1 下载 Maven

2.2 安装配置 Maven

2.3 测试安装

2.4 修改 Maven 本地仓库的默认路径

3、Maven 配置

3.1 配置本地仓库

3.2 配置 JDK

3.3 IDEA 配置本地 Maven

4、Maven 仓库

4.1 仓库的概念

4.2 仓库的分类

4.3 本地仓库

4.4 远程仓库

4.4.1 中央仓库

4.4.2 公共仓库

4.4.3 私服

五、Maven 私服详解

5.1 私服的概念

5.2 私服的架构


1、Maven 概述

写项目时,我们需要引用各种 jar 包,尤其是比较大的工程,引用的 jar 包往往有几十个乃至上百个, 每用到一种 jar 包,都需要手动引入工程目录,而且经常遇到各种让人抓狂的 jar 包冲突,版本冲突。

1.1 Maven 的定义

Maven 是一个基于项目对象模型(POM)概念的纯 Java 开发的开源项目管理工具,主要用于管理 Java 项目,进行依赖管理(jar 包依赖管理)和项目构建(项目编译、打包、测试、部署),还能实现分模块开发,提高开发效率。

1.2 Maven 解决的问题

在传统项目开发中,存在诸多项目管理问题:

  • 繁琐:每个项目都需要手动导入所需的 jar 包,且要搜集全部相关 jar 包。
  • 复杂:项目中的 jar 包若需要版本升级,需重新搜集新的 jar 包。
  • 冗余:相同的 jar 包在不同项目中重复保存,占用大量空间。

1.3 Maven 的核心特性与优势

  • 依赖管理:通过在 pom.xml 文件中添加 jar 包的坐标,而非直接将 jar 包导入工程,避免了 jar 包直接引入的问题。当需要使用 jar 包时,Maven 会根据坐标到仓库中查找并获取。
  • 一键构建:项目从编译、测试、运行、打包、安装到部署的整个构建过程都可由 Maven 管理,使用一个命令即可轻松完成。
  • 分模块开发:常用于大型项目,可按层(如 dao、service、web)或按业务(如用户管理、订单管理、支付管理等)进行模块划分,提高开发效率。

2、Maven 安装

2.1 下载 Maven

进入Maven官网https://maven.apache.org/,按下图依次操作。

默认下载最高版本,如果需要下载其他版本,请页面下滑找到这个:

 

2.2 安装配置 Maven

 Maven安装的前提需要先安装配置jdk

win+R输入cmd打开终端,查看jdk是否安装,如果没有显示版本号,请先安装jdk,安装时请注意jdk版本和maven的兼容要求。

 找到“查看高级系统设置”,

2.3 测试安装

在cmd命令行窗口,输入指令mvn -v回车, 如下图所示,说明环境变量配置成功。 

2.4 修改 Maven 本地仓库的默认路径

在Maven安装的根目录下,创建文件夹"repository"。

3、Maven 配置

3.1 配置本地仓库

在 Maven 的 conf 目录中有 settings.xml 配置文件,可按如下方式配置本地仓库:

3.2 配置 JDK

在 settings.xml 文件的profiles标签中增加一个profile标签,限定 Maven 项目默认的 JDK 版本:

<profiles>
    <!-- java版本 -->
    <profile>
      <id>jdk-1.8</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
      </activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
      </properties>
    </profile>
  </profiles>
</profiles>

3.3 IDEA 配置本地 Maven

打开 IDEA(此处以2025.1.1.1版为例) ,按下图依次操作

4、Maven 仓库

4.1 仓库的概念

仓库是存储依赖的地方,体现为本地的一个目录。仓库中不仅存放依赖,还管理着每个依赖的唯一标识(坐标),Java 项目凭借坐标获取依赖。

4.2 仓库的分类

Maven 中的仓库主要分为本地仓库和远程仓库:

  • 本地仓库:用于存储从远程仓库或中央仓库下载的插件和 jar 包。项目使用插件或 jar 包时,会优先从本地仓库查找。默认本地仓库位置在${user.dir}/.m2/repository,也可在 settings.xml 文件中配置。
  • 远程仓库:若本地仓库中没有所需的插件或 jar 包,默认会从远程仓库下载。远程仓库可以在互联网内,也可以在局域网内,包括中央仓库、公共仓库和私服等。

4.3 本地仓库

即在 settings.xml 中配置的目录,使用过的依赖会自动存储在本地仓库中,以便后续复用。

4.4 远程仓库

4.4.1 中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,无需任何配置,Maven 中内置了中央仓库的地址http://repo1.maven.org/maven2。其中包含了绝大多数流行的开源 Java 构件,可通过https://mvnrepository.com/搜索需要的依赖信息。

4.4.2 公共仓库

除中央仓库外,还有其他远程仓库,如阿里云仓库http://maven.aliyun.com/nexus/content/groups/public/。由于中央仓库在国外,下载依赖速度较慢,因此通常会配置一个国内的公共仓库替代中央仓库。在 settings.xml 中添加如下配置:

<!--setting.xml中添加如下配置-->
<mirrors>
	<mirror>
        <id>aliyun</id>  
        <!-- 中心仓库的 mirror(镜像) -->
        <mirrorOf>central</mirrorOf>    
        <name>Nexus aliyun</name>
        <!-- aliyun仓库地址 以后所有要指向中心仓库的请求,都会指向aliyun仓库-->
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
    </mirror>
</mirrors>
4.4.3 私服

私服是架设在局域网的一种特殊远程仓库,目的是代理远程仓库及部署第三方构件。有了私服后,Maven 下载依赖时直接请求私服,私服上存在则下载到本地仓库;否则,私服会请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。私服可以解决企业开发中每次下载 jar 包只能自己使用,不能被其他开发人员使用的问题。可以通过 Nexus来创建、管理一个私服。

五、Maven 私服详解

5.1 私服的概念

私服是公司范围内共享的仓库,不对外开放,可通过 Nexus 等工具创建和管理。Maven 私服的概念就是在本地架设一个 Maven 仓库服务器,在代理远程仓库的同时维护本地仓库。当我们需要下载一些构件(artifact)时,如果本地仓库没有,再去私服下载,私服没有,再去中央仓库下载。

5.2 私服的架构

我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如 Apache Archiva,Artifactory,Sonatype Nexus。这里我们使用 Sonatype Nexus。Nexus 是一个专门的 Maven 仓库管理软件,它不仅能搭建 Maven 私服,还具备如下一些优点使其日趋成为最流行的 Maven 仓库管理器:

  • 提供了强大的仓库管理功能,构件搜索功能
  • 它基于 REST,友好的 UI 是一个 ext.js 的 REST 客户端
  • 它占用较少的内存
  • 基于简单文件系统而非数据库

平时我们用的是阿里的共用maven服务器,但是在公司时,我们需要用到公司自研的jar包,这些jar包是私有的,所以在阿里的共用maven服务器中找不到,虽然我们也可以那个u盘来拷贝公司的私有jar包,但公司人这么多,一个个拷贝就太慢了,可以使用nexus搭建一个公司的私服,只需要连接公司的内网,配置好maven的settings.xml就可以在nexus中下载自己需要的jar包了

参考链接:

【附安装包】Maven下载、安装、配置与使用(保姆级教程)_java_程序员钟霖-GitCode 开源社区

【maven】最全Maven详解,看这一篇就够啦_maven大全-CSDN博客

使用Nexus搭建Maven私服教程(附:nexus上传、下载教程)_nexus maven-CSDN博客

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

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

相关文章

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…