HoRain云--Maven 仓库

📅 2026/8/10 10:52:59
HoRain云--Maven 仓库
在 Maven 的术语中仓库是一个位置place。Maven 仓库是项目中依赖的第三方库这个库所在的位置叫做仓库。在 Maven 中任何一个依赖、插件或者项目构建的输出都可以称之为构件。Maven 仓库能帮助我们管理构件主要是 JAR它就是放置所有 JAR 文件WARZIPPOM 等等的地方。Maven 仓库类型仓库类型存储位置作用访问优先级本地仓库用户目录下的.m2/repository缓存远程下载的依赖1远程仓库网络服务器提供依赖和插件的集中存储2- 中央仓库repo.maven.apache.orgMaven官方维护的默认仓库2.1- 私服仓库公司内部搭建如Nexus托管私有依赖加速构建2.2- 其他公共仓库如阿里云、JCenter等镜像或补充中央仓库2.3本地仓库Maven 的本地仓库在安装 Maven 后并不会创建它是在第一次执行 maven 命令的时候才被创建。运行 Maven 的时候Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有它会首先尝试从远程仓库下载构件至本地仓库然后再使用本地仓库的构件。默认情况下不管 Linux 还是 Windows每个用户在自己的用户目录下都有一个路径名为 .m2/repository/ 的仓库目录。Windows:C:\Users\用户名\.m2\repositoryLinux/macOS:~/.m2/repositoryMaven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。settings localRepositoryC:/MyLocalRepository/localRepository /settings当你运行 Maven 命令Maven 将下载依赖的文件到你指定的路径中。清理本地仓库:mvn dependency:purge-local-repository # 或手动删除~/.m2/repository目录中央仓库Maven 中央仓库是由 Maven 社区提供的仓库其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源 Java 构件以及源码、作者信息、SCM、信息、许可证信息等。一般来说简单的 Java 项目依赖的构件都可以在这里下载到。中央仓库的关键概念这个仓库由 Maven 社区管理。不需要配置。需要通过网络才能访问。中央仓库无需显式配置默认地址Central Repository:远程仓库自定义仓库配置如果 Maven 在中央仓库中也找不到依赖的文件它会停止构建过程并输出错误信息到控制台。为避免这种情况Maven 提供了远程仓库的概念它是开发人员自己定制仓库包含了所需要的代码库或者其他工程中用到的 jar 文件。举例说明使用下面的 pom.xmlMaven 将从远程仓库中下载该 pom.xml 中声明的所依赖的在中央仓库中获取不到的文件。实例repositoriesrepositoryidaliyun/idnameAliyun Maven/nameurlhttps://maven.aliyun.com/repository/public/urlreleasesenabledtrue/enabled/releasessnapshotsenabledfalse/enabled !-- 禁用SNAPSHOT版本 --/snapshots/repository/repositories镜像仓库推荐在 settings.xml 中配置实例mirrorsmirroridaliyun/idnameAliyun Mirror/nameurlhttps://maven.aliyun.com/repository/public/urlmirrorOfcentral/mirrorOf !-- 覆盖中央仓库 --/mirror/mirrorsMaven 阿里云(Aliyun)仓库Maven 仓库默认在国外 国内使用难免很慢我们可以更换为阿里云的仓库。修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件在 mirrors 节点上添加内容如下mirror idaliyunmaven/id mirrorOf*/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror如果想使用其它代理仓库可在 repositories/repositories 节点中加入对应的仓库使用地址。以使用 spring 代理仓为例repository idspring/id urlhttps://maven.aliyun.com/repository/spring/url releases enabledtrue/enabled /releases snapshots enabledtrue/enabled /snapshots /repository在你的 pom.xml 文件 denpendencies/denpendencies 节点中加入你要引用的文件信息dependency groupId[GROUP_ID]/groupId artifactId[ARTIFACT_ID]/artifactId version[VERSION]/version /dependency执行拉取命令mvn installgradle 配置指南在 build.gradle 文件中加入以下代码:allprojects { repositories { maven { url https://maven.aliyun.com/repository/public/ } mavenLocal() mavenCentral() } }如果想使用其它代理仓以使用spring仓为例代码如下:allProjects { repositories { maven { url https://maven.aliyun.com/repository/public/ } maven { url https://maven.aliyun.com/repository/spring/ } mavenLocal() mavenCentral() } }加入你要引用的文件信息dependencies { compile [GROUP_ID]:[ARTIFACT_ID]:[VERSION] }执行以下命令安装依赖gradle dependencies 或 ./gradlew dependencies私服仓库仓库类型仓库类型用途hosted存放私有构件proxy代理远程仓库group聚合多个仓库发布到私服在 pom.xml 中配置distributionManagement repository idnexus-releases/id urlhttp://your-nexus/repository/maven-releases/url /repository snapshotRepository idnexus-snapshots/id urlhttp://your-nexus/repository/maven-snapshots/url /snapshotRepository /distributionManagement在 settings.xml 中配置认证servers server idnexus-releases/id usernamedeploy-user/username passworddeploy-pwd/password /server /servers发布命令mvn deployMaven 依赖搜索顺序当我们执行 Maven 构建命令时Maven 开始按照以下顺序查找依赖的库步骤 1 在本地仓库中搜索如果找不到执行步骤 2如果找到了则执行其他操作。步骤 2 在中央仓库中搜索如果找不到并且有一个或多个远程仓库已经设置则执行步骤 4如果找到了则下载到本地仓库中以备将来引用。步骤 3 如果远程仓库没有被设置Maven 将简单的停滞处理并抛出错误无法找到依赖的文件。步骤 4 在一个或多个远程仓库中搜索依赖的文件如果找到则下载到本地仓库以备将来引用否则 Maven 将停止处理并抛出错误无法找到依赖的文件。常用命令命令作用mvn dependency:resolve解析依赖mvn dependency:tree查看依赖树mvn dependency:purge-local-repository清理本地仓库mvn deploy发布到远程仓库常见问题解决1、依赖下载失败现象Could not transfer artifact...解决检查网络连接验证仓库URL是否正确临时关闭防火墙测试2、认证失败现象401 Unauthorized解决检查 settings.xml 中的 server 配置确认用户名/密码是否有仓库访问权限3、依赖冲突排查mvn dependency:tree -Dverbose解决在 dependencyManagement 中统一版本