Maven中GeoTools的引入 - Maven 的 repository 与 mirror的关系

本文详细介绍了如何在Maven项目中配置OSGeo Release Repository仓库,并针对中央仓库速度慢的问题,设置了阿里云镜像。重点讲解了镜像与仓库的关系,以及设置多个镜像时的注意事项。通过合理的配置,确保GeoTools依赖包的高效下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目的pom文件中配置GeoTools仓库

<repository>
   <id>osgeo</id>
   <name>OSGeo Release Repository</name>
   <url>https://repo.osgeo.org/repository/release/</url>
   <snapshots><enabled>false</enabled></snapshots>
   <releases><enabled>true</enabled></releases>
</repository>

镜像

由于maven的中央仓库在国外,国内访问速度较慢,一般我们采用配置镜像(mirror)的方式从国内的镜像服务器中下载资源。

maven根据setting.xml文件中配置的镜像拦截发往原仓库的请求,并将其转发到镜像仓库。

仓库与镜像的关系:
即:当一个镜像的mirrodOf参数与某个仓库的id参数相匹配,就向该镜像请求资源,否则向原仓库请求资源。

阿里云镜像是常用的maven镜像之一,其镜像了中央仓库的所有资源。

setting.xml文件中阿里云镜像的配置如下:

<!-- 阿里云镜像 -->
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

按照以上配置好镜像和仓库后,则能正常下载GeoTools的依赖包。

镜像配置说明

在maven的配置文件setting.xml大里面有个mirrors节点,用来配置镜像URL。mirrors可以配置多个mirror,每个mirror有id,name,url,mirrorOf属性,id是唯一标识一个mirror,name节点名,url是官方的库地址,mirrorOf代表了一个镜像的替代位置,例如central就表示代替官方的中央库,虽然mirrors可以配置多个子节点,但是它只会使用其中的一个节点,即默认情况下配置多个mirror的情况下,只有第一个生效,只有当前一个mirror无法连接的时候,才会去找后一个;而我们想要的效果是:当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载,但是maven不会这样做!

配置多个mirror时,mirrorOf不能配置*。*的意思就是(根据mirrorOf和repository的id)匹配所有的库(repository),这样就是说如果你需要某个jar,他会从镜像地址去下载这个jar。不管你配置了多少个库,即使这些库的地址不一样,仍然会从镜像地址访问。

<mirrorOf>*</mirrorOf> 
匹配所有仓库请求,即将所有的仓库请求都转到该镜像上
<mirrorOf>repo1,repo2</mirrorOf> 
将仓库repo1和repo2的请求转到该镜像上,使用逗号分隔多个远程仓库。 
<mirrorOf>*,!repo1</miiroOf> 
匹配所有仓库请求,repo1除外,使用感叹号将仓库从匹配中排除。

Maven 依赖搜索序列

当我们执行 Maven 构建命令,Maven 依赖库按以下顺序进行搜索:

  • 第1步 - 搜索依赖本地资源库,如果没有找到,跳到第2步,否则,如果找到那么会做进一步处理。
  • 第2步 - 搜索依赖中央存储库,如果没有找到,则从远程资源库/存储库中,然后移动到步骤4,否则如果找到,那么它下载到本地存储库中,以备将来参考使用。
    -第3步 - 如果没有提到远程仓库,Maven 则会停止处理并抛出错误(找不到依赖库)。
  • 第4步 - 远程仓库或储存库中的搜索依赖,如果找到它会下载到本地资源库以供将来参考使用,否则 Maven 停止处理并抛出错误(找不到依赖库)。

参考文章:
Maven中GeoTools的引入 - Maven 的 repository 与 mirror
Maven存储库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值