maven setting 配置仓库,pom.xml中repository不起作用
问题描述
最近做java项目,需要使用公司自己搭建的maven仓库,但是有些包公司的仓库中没有,导致下载失败。
项目环境
jdk:1.8
maven:3.5
问题原因分析
maven的setting文件配置信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?xml version= "1.0" encoding= "UTF-8" ?> <settings> <localRepository>/data/repository</localRepository> <servers> <server> <id>releases</id> <username> 123 </username> <password> 123 </password> </server> <server> <id>snapshots</id> <username> 123 </username> <password> 123 </password> </server> </servers> <mirrors> <!--注意标红的部分--> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http: //server.dev.****.com:8000/nexus/content/groups/public/</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>central</id> <url>http: //central</url> <releases><enabled> true </enabled></releases> <snapshots><enabled> true </enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> |
pom.xml中的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <repositories> <repository> <id>aliyun-repos</id> <url>https: //maven.aliyun.com/repository/public</url> <releases><enabled> true </enabled></releases> <snapshots><enabled> false </enabled></snapshots> </repository> <repository> <id>sonatype-repos-s</id> <name>Sonatype Repository</name> <url>https: //oss.sonatype.org/content/repositories/snapshots</url> <releases><enabled> false </enabled><updatePolicy>always</updatePolicy></releases> <snapshots><enabled> true </enabled><updatePolicy>always</updatePolicy></snapshots> </repository> </repositories> |
我需要下载的包的仓库地址在pom文件中配置了,就是 https://oss.sonatype.org/content/repositories/snapshots,这个仓库,
但是为什么下载的时候没有起作用呢?问题就出在setting中如下部分:
1 2 3 4 5 | <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http: //server.dev.****.com:8081/nexus/content/groups/public/</url> </mirror> |
mirrorof标签,这个标签如果设置为*,就说明整个工程只能使用settings中配置的地址,这个就是问题的根源。
解决办法
在settings文件的mirrorof标签中内容改成(!sonatype-repos-s,*),括号里面的内容,不包括括号,这样做的意思是,!sonatype-repos-s意思是把sonatype-repos-s这个仓库排除在外,依然把公司的仓库作为唯一仓库,这样就可以使用settings文件中配置的仓库和pom.xml配置的仓库都生效。
-------------------------------------------------------------分割线---------------------------------------------------------------
番外话:上面的问题产生的根本原因是,我们平时做项目时一般都是复制粘贴,根本不知道有些配置项什么意思,出了问题就百度,但是有时百度查不到时,还是要老老实实的从原理入手。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?