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

目录

[1、Maven 概述](#1、Maven 概述)

[1.1 Maven 的定义](#1.1 Maven 的定义)

[1.2 Maven 解决的问题](#1.2 Maven 解决的问题)

[1.3 Maven 的核心特性与优势](#1.3 Maven 的核心特性与优势)

[2、Maven 安装](#2、Maven 安装)

[2.1 下载 Maven](#2.1 下载 Maven)

[2.2 安装配置 Maven](#2.2 安装配置 Maven)

[2.3 测试安装](#2.3 测试安装)

[2.4 修改 Maven 本地仓库的默认路径](#2.4 修改 Maven 本地仓库的默认路径)

[3、Maven 配置](#3、Maven 配置)

[3.1 配置本地仓库](#3.1 配置本地仓库)

[3.2 配置 JDK](#3.2 配置 JDK)

[3.3 IDEA 配置本地 Maven](#3.3 IDEA 配置本地 Maven)

[4、Maven 仓库](#4、Maven 仓库)

[4.1 仓库的概念](#4.1 仓库的概念)

[4.2 仓库的分类](#4.2 仓库的分类)

[4.3 本地仓库](#4.3 本地仓库)

[4.4 远程仓库](#4.4 远程仓库)

[4.4.1 中央仓库](#4.4.1 中央仓库)

[4.4.2 公共仓库](#4.4.2 公共仓库)

[4.4.3 私服](#4.4.3 私服)

[五、Maven 私服详解](#五、Maven 私服详解)

[5.1 私服的概念](#5.1 私服的概念)

[5.2 私服的架构](#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 版本:

XML 复制代码
<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 中添加如下配置:

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.jsREST 客户端
  • 它占用较少的内存
  • 基于简单文件系统而非数据库

平时我们用的是阿里的共用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博客

相关推荐
dualven_in_csdn1 小时前
搞了两天的win7批处理脚本问题
java·linux·前端
CodeCraft Studio2 小时前
Excel处理控件Aspose.Cells教程:使用 C# 从 Excel 进行邮件合并
开发语言·c#·excel
小超爱编程2 小时前
纯前端做图片压缩
开发语言·前端·javascript
C++chaofan3 小时前
74. 搜索二维矩阵
java·算法·leetcode·矩阵
诺浅4 小时前
AWS S3 SDK FOR JAVA 基本使用及如何兼容七牛云
java·spring boot·aws
迢迢星万里灬4 小时前
Java求职者面试:微服务技术与源码原理深度解析
java·spring cloud·微服务·dubbo·netty·分布式系统
KIDAKN5 小时前
java--怎么定义枚举类
java·开发语言
何中应5 小时前
第一个人工智能(AI)问答Demo
java·人工智能·语言模型
海天胜景5 小时前
C# 中常用的 字符串截取方法
开发语言·c#
东阳马生架构5 小时前
商品中心—3.商品可采可补可售的技术文档
java