微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

防止 Maven 在不需要时连接到外部存储库的策略

如何解决防止 Maven 在不需要时连接到外部存储库的策略

我在一家非常大的企业工作,该企业对安全性相当偏执。我们有一个企业 Maven 存储库,可以反映中央存储库和其他外部存储库。

我们正在尝试使用源在 github 上的工件,并且指定其工件存储库是 oss.sonatype.org。主要工件有一个依赖项,由同一组开发,也在 github 和 oss.sonatype.org 上。我们的中央镜子有这两种人工制品。我故意不提这个神器,虽然它可能没有必要。许多其他公司可能都在使用它。

我们有一个将第一个工件指定为依赖项的服务。当构建运行时,它能够从我们的内部镜像中获取工件。但是,它也会尝试连接到 oss.sonatype.org 以查看它是否也可以在那里找到工件。但是,我们有意在 settings.xml 文件中没有代理设置,这有效地防止了从外部存储库获取工件的尝试。这在功能上有效。我们从内部镜像中获取工件,而不是从外部存储库中获取

然而,在这种情况下发生的情况是尝试连接到 oss.sonatype.org 需要很长时间,只有在失败时才放弃。它显然多次尝试这种连接。事实上,当我们使用 DID 设置代理的自定义 settings.xml 测试构建时,我们发现这比每次连接超时的运行速度快两个数量级。具有讽刺意味的是,即使使用代理的构建速度要快得多,它仍然无法连接到 oss.sonatype.org,出现 401 错误(这很奇怪,因为我虽然它允许匿名访问)。这不是问题,因为我们是从我们的内部镜像获取工件,并且使用代理集,我们只是比没有代理的情况下更快地获得 401 错误

那么,有什么方法可以配置我们的 Maven 构建,这样当它获取初始工件时,它只需从我们的内部镜像中获取两个工件,而无需尝试连接到 oss.sonatype.org,而且非常重要的是,根本不改变原始工件?

更新

我已经检查了评论中引用的有关“镜子”的信息。我们 CI 服务器中的 setttings.xml 已经有一个镜像规范,大致如下:

    <mirror>
        <id>nexus</id>
        <mirrorOf>central</mirrorOf>
        <url>https://.../nexus/content/groups/...-public-group</url>
    </mirror>

如果有帮助,我们的内网存储库是 Nexus。

不清楚我必须添加哪些额外的镜像规范以确保对 oss.sonatype.org 的存储库引用转到我们的内网存储库。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。