在我的 maven settings.xml 是以下片段:
<mirrors>
<mirror>
<!--This sends everything to our company mirror -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>[company-mirror]</url>
</mirror>
</mirrors>
Run Code Online (Sandbox Code Playgroud)
这会将所有内容发送到我们公司的镜像,如果无法解决,我们将从 maven 存储库中获取。
现在,我们还通过他们的 maven 联系从我们的一项技术的供应商那里收到错误修复。问题是我们公司的镜像不会自动查询这个关系,我可以很容易地在 settings.xml 中提供以下镜像编辑:
<mirrors>
<mirror>
<id>[vendor-id]</id>
<mirrorOf>[vendor-mirror]</mirrorOf>
<url>[vendor-url]</url>
</mirror>
<mirror>[company-mirror-settings]</mirror>
</mirrors>
Run Code Online (Sandbox Code Playgroud)
然后它将查询正常,但我们不能为我们公司维护的仅查询公司镜像的构建服务器执行此操作。
有没有办法在我们本地的 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>
Run Code Online (Sandbox Code Playgroud)
运行 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>
Run Code Online (Sandbox Code Playgroud)
小智 5
镜像定义settings.xml允许重载默认central存储库以及 POM 中定义的任何存储库。因此,如果您的构建服务器使用一个设置文件,您的公司管理的存储库定义为<mirrorOf>*</mirrorOf>,它将用于每个 POM 定义的存储库,并且基本上忽略这些定义。
因此,settings.xml应该修改构建服务器使用的 ,以便不是所有存储库都被镜像,或者应该将公司管理的存储库配置为镜像供应商的存储库。
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |