java - 通过本地 pom 禁用 Maven 设置镜像
问题描述
在我的 maven settings.xml 中有以下代码段:
<mirrors>
<mirror>
<!--This sends everything to our company mirror -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>[company-mirror]</url>
</mirror>
</mirrors>
这会将所有内容发送到我们公司的镜像,如果无法解析,我们将从 maven 存储库中获取它。
现在,我们还通过他们的 maven nexus 从我们的一种技术的供应商那里收到错误修复。问题是我们公司的镜像不会自动查询这个关系,我可以很容易地在 settings.xml 中提供以下镜像编辑:
<mirrors>
<mirror>
<id>[vendor-id]</id>
<mirrorOf>[vendor-mirror]</mirrorOf>
<url>[vendor-url]</url>
</mirror>
<mirror>[company-mirror-settings]</mirror>
</mirrors>
然后它会很好地查询,但我们不能为我们公司维护的构建服务器执行此操作,它只查询公司镜像。
有没有办法在我们本地的 pom.xml/project 中做到这一点而无需触及任何外部设置?
我尝试在我们的 pom.xml 中进行以下操作,但没有成功:
<project>
...
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>[vendor-id]</id>
<name>[vendor-name]</name>
<url>[vendor-url]</url>
</repository>
</repositories>
...
</project>
运行 mvn clean install 得到以下错误:
[ERROR] Failed to execute goal on project <project-name>: Could not resolve dependencies for project <project-name>:jar:1.2.0-SNAPSHOT: Coul
d not find artifact <vendor-dependency> in <company-mirror>
解决方案
中的镜像定义settings.xml
允许重载默认central
存储库以及 POM 中定义的任何存储库。因此,如果您的构建服务器使用您的公司管理的存储库定义为的设置文件<mirrorOf>*</mirrorOf>
,它将为每个 POM 定义的存储库使用它,并且基本上忽略这些定义。
因此,要么settings.xml
应修改构建服务器使用的存储库,以便并非所有存储库都被镜像,要么应将公司管理的存储库配置为镜像供应商的存储库。
推荐阅读
- javascript - 匹配国际字母
- assembly - x86 程序集,如何在控制台中不显示用户输入?
- php - Prestashop - 通过外部脚本创建购物车
- python - 类为数字时的 1-hot 编码
- excel - 如何将相同的 VBA 代码应用于文件夹中的多个文件?
- amazon-web-services - 附加到 EC2 的 EBS 上的 IOPS:Grafana 与 AWS CloudWatch
- python - yt-search SearchError yt_search.errors.SearchError: badRequest
- forms - Flutter:Navigator.of(context).pop() 返回黑屏
- javascript - 限制波浪 wavesurfer.js 的高度
- r - R ggplot 在 x 轴上有分位数