一、仓库的分类
Maven的仓库分成本地仓库和远程仓库。
1.本地仓库
当Maven根据坐标寻找构件时,首先会从本地仓库寻找;
默认情况下,每个操作系统用户在自己的用户目录下都有一个.m2/repositroy/仓库目录。如果想指定其他路径。修改~/.m2/setting.xml,设置localRepository 元素,如:
<settings>
<localRepository>D:\tools\repository</localRepository>
</settings>
本地仓库中的构件有两种来源:一是从远程仓库下载到本地仓库;二是将本地项目的构件安装到Maven仓库中(mvn clean install)。
2.远程仓库
当本地仓库找不到相应构件时,需要查看是否有更新的版本时,Maven就会去远程仓库寻找,发现构件后,会下载到本地仓库。
3.中央仓库
中央仓库是默认的远程仓库,由Apache创建,其中有世界上大多数流行的开源Java构件。
4.私服
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven从私服请求构件时,如果构件不存在,会从外部的远程仓库下载,缓存到私服上,再提供下载服务。此外,一些无法从外部仓库下载的构件也可从本地上传到私服上供局域网内部人员使用。
使用私用有如下好处:
- 节省自己的外网带宽
- 加速Maven构建
- 部署第三方构件
- 提高稳定性,增强控制
- 降低中央仓库的负荷
二、远程仓库的配置
1.添加远程仓库
很多情况下,默认的中央仓库无法满足项目的需求,项目需要的构件位于其他的远程仓库中,这时,可在POM中配置该仓库。如:
<repositories>
<repository>
<id>local</id>
<name>nexus</name>
<url>http://localhost:9999/nexus/content/groups/public</url>
<releases>
<enable>true</enable>
</releases>
<snapshots>
<enable>true</enable>
</snapshots>
</repository>
</repositories>
任何一个仓库的id 必须是唯一的,尤其需要注意的是,Maven自带的中央仓库使用的id为central,如果其他的仓库也使用central作为ID,会覆盖中央仓库的配置。
releases和snapshots用来控制Maven对于发布版构件和快照版构件的下载。如果为true,表示开启相应版本的下载。上面的配置表示可从该远程仓库下载发布版而不下载快照版构件。
对于releases和snapshots来说,除了enabled,还有 updatePolicy 和 checksumPolicy 两个子元素:
<snapshots>
<enable>true</enable>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
updatePolicy用来配置从远程仓库检查更新的频率,可选值为:
daily:默认值,表示每天检查一次。
never:从不检查更新
always:每次构建都检查更新
interval:X 第隔X分钟检查一次更新(X为任意整数)
checksumPolicy用来配置Maven检查校验和文件失败时的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件时,Maven会验证校验和文件,如果校验和验证失败,怎么办?根据checksumPolicy的值判断
warn:输出警告
fail:让构件失败
ignore:忽略
2.远程仓库的认证
有时出于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库。
配置认证信息和仓库信息不同,仓库信息可直接配置在POM文件中,但是认证信息必须配置在settings.xml中。因为pom.xml会上传到仓库中。配置方法如下:
<servers>
<id>my-proj</id>
<username>repo-user</username>
<password>repo-pwd</password>
</servers>
其中的ID对应仓库的ID
3.部署至远程仓库
可通过mvn clean deploy将项目部署到某个远程仓库(通常是私服)。部署之前需要配置pom.xml文件:
<distributionManagement>
<repository>
<id>proj-release</id>
<name>Proj Release Repository</name>
<url>...</url>
</repository>
<snapshotRepository>
<id>proj-snapshot</id>
<name>Proj Snapshot Repository</name>
<url>...</url>
</snapshotRepository>
<distributionManagement>
distributionManagement包含repository和snapshotRepository两个子元素,前者表示发布版本构件的仓库,后者表示快照版本构件的仓库。
如果需要认证信息,见上一节。
三、快照版本
快照版本声明如:2.1-SNAPSHOT,在部署这样的项目时,Maven会自动加时间戳;
而下载快照版构件时,Maven会自动找到2.1-SNAPSHOT版本最新的文件。
默认情况下,Maven每天检查一次更新(由仓库配置的updatePolicy决定)。加上参数-U,可以强制让Maven检查更新。
快照版本只应该在组织内部中使用。
四、其他特殊版本
除了SNAPSHOT版本外,还有RELEASE和LATEST两种版本。分别表示最新的发布版本和最新版本(包含快照版)。
五、镜像
如果仓库X可提供仓库Y存储的所有内容,那么就可以说X是Y的一个镜像。如:http://maven.net.cn/content/groups/public是中央仓库http://repo1.maven.org/maven2/在中国的镜像。使用该镜像来代替中央仓库,编辑settings.xml:
<mirrors>
<mirror>
<id>maven.net.cn</id>
<name>...</name>
<url>http://maven.net.cn/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirros>
其中mirrorOf表示是仓库ID为central(中央仓库)的镜像。mirrorOf还支持一些高级配置:
* 匹配所有远程仓库
external:* 匹配所有远程仓库,但localhost,使用file协议的除外。
repo1,repo2 匹配仓库repo1和repo2
*,! repo1 匹配所有远程仓库,repo1除外。
分享到:
相关推荐
### Maven仓库详解 Maven是Java项目自动化构建工具的一个标准,它通过一组生命周期(lifecycle)、构建阶段(phase)和目标(goal)来定义项目的构建过程。Maven的核心概念之一是仓库(Repository),仓库用于存储...
maven仓库清理命令
【Maven很Maven仓库】这个标题暗示了讨论的核心是关于Maven以及它与Maven仓库的关系。Maven是一个在Java开发中广泛使用的项目管理和综合工具,它通过一个声明式的配置来管理项目的构建、报告和文档。Maven仓库则是...
nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库
### 超全面搭建Maven仓库 Maven是一款强大的项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。本文将详细介绍如何搭建Maven环境、配置Maven仓库以及在Eclipse中集成Maven。 #### 一、下载安装Maven...
settings.xml,本地maven仓库配置,注意:D:\maven\repository为我本地的maven仓库路径,改成你的。 settings.xml,本地maven仓库配置,注意:D:\maven\repository为我本地的maven仓库路径,改成你的。 settings.xml...
当你需要引入新的库或jar包到你的项目中时,Maven仓库搜索服务就显得尤为重要。本文将详细介绍如何利用Maven仓库搜索服务来查找并获取所需的依赖坐标。 Maven依赖的基本格式是groupId:artifactId:version,它由三...
Maven仓库是Java开发中不可或缺的一部分,它是一个中央存储库,包含了大量的开源项目构件(JAR文件),使得开发者能够方便地管理和下载所需的依赖。Maven通过使用一个统一的配置方式,简化了项目的构建、依赖管理和...
Maven仓库在Java开发中扮演着至关重要的角色,它是一个存储库,用于管理和构建Java项目,包含各种依赖项如JAR文件、源代码、文档等。然而,随着时间的推移,Maven仓库可能会积累大量不再使用的或者过时的依赖,这...
Maven仓库是Java开发中至关重要的一个组成部分,它是一个集中存储各种软件构件(如JAR包)的中央仓库,便于开发者获取、管理和分享依赖。Maven通过配置项目构建的POM.xml文件,能够自动从仓库中下载所需的jar包,极...
Maven仓库分为三种类型:本地仓库(Local Repository)、远程仓库(Remote Repository)和中央仓库(Central Repository)。本地仓库是默认的首要资源,Maven首先在这里查找项目依赖。如果找不到,它会尝试从远程...
** Maven仓库清理程序详解 ** Maven仓库是Java开发者在构建项目时不可或缺的一部分,它存储了项目的依赖库,包括JAR文件和其他构建资源。随着时间的推移,Maven仓库可能会积累大量的缓存文件,这些文件可能包括以"....
一键清除maven仓库中下载失败的jar包的实现方法 在Maven项目中,下载失败的jar包是一个常见的问题,它们会占用磁盘空间,影响开发效率和心情。因此,清除这些下载失败的jar包变得非常重要。本文将详细介绍如何使用...
Maven仓库管理-Nexus Maven仓库管理是Maven的核心概念之一,它解决了使用 Ant 时期的 jar 包管理问题。Maven 仓库的初衷是为了解决版本管理的问题,通过 Group Id, Artifact Id, version 来管理 jar 包,实现了依赖...
详解如何将本地JAR包添加到本地Maven仓库中 有些时候,当我们需要在自己的maven工程中添加一个确定的jar而发现Maven中央仓库不存在时,但是我们自己手上有这些需要的jar包,那么我们可以自给自足,把这个jar包添加到...
在Java开发中,Maven仓库是一个至关重要的组成部分,它存储了大量的jar包,这些包包含了各种预编译的类和库,使得开发者无需从零开始构建项目。Maven仓库分为本地仓库、中央仓库和远程仓库,其中"maven-repository...
JarsCrawler是一款专门设计用于遍历和下载Maven仓库中所有jar包的工具。它可以帮助开发者快速获取所需库,尤其对于进行自动化构建或者研究不同库功能的开发者来说,这是一个非常实用的工具。通过JarsCrawler,我们...
设置Maven仓库-Artifactory Maven 是 Java 开发者中流行的构建工具,可以帮助减少构建应用程序时所依赖的软件构件的副本。Maven 建议的方法是将所有软件构件存储于一个叫做 repository 的远程仓库中。设置内部 ...
Maven仓库是Maven系统的核心组成部分,用于存储和检索项目依赖的jar包。它分为本地仓库和远程仓库: 1. **本地仓库**:默认位于用户主目录下的`.m2\repository`,Maven首次构建项目时,会从远程仓库下载所需的jar包...
将本地jar包上传到maven仓库,刷新仓库后即可使用