【问题标题】:How to avoid maven to request private artifacts from public repositories?如何避免 Maven 从公共存储库请求私有工件?
【发布时间】:2012-06-10 12:16:21
【问题描述】:

我首先有一个带有我自己的存储库的 pom 文件,然后是一组公共存储库(repo1、repo2、java.net 等)。假设所有都是“发布”存储库。

我的问题是 maven 向所有存储库发出请求以查找我们的内部 jar,要么是第一次下载 jar,要么验证 metadata.xml,如果版本控制是“(1.0.0,1.1)之类的范围.0]"。

如何应用某种过滤器来声明诸如 groupID foo.bar 之类的内容仅属于存储库“foo”。

这个案例让我感到困扰有两个原因:一个是向公共服务器发送这些请求是浪费带宽(当一个服务器很慢时,它只会减慢一切),其次它暴露了我们的名称内部包到外部世界的日志文件中。

我不想部署本地代理或类似的东西,只想让某个 groupID(或列表)始终转到某个存储库。即使对于非私有工件,它也有助于指定某个工件在某个存储库上,对于那些不在公共通用工件(repo.maven、download.java)上的工件,从而避免那些多余的请求。

【问题讨论】:

  • 我知道你说过你不喜欢本地代理,但是任何有用的本地存储库软件不应该还包括提供公共存储库的简单本地代理的能力吗?
  • 我的本地存储库是一个简单的启用 webdav 的 apache。我不想设置比这更复杂的东西。
  • 让我进一步解释一下:本地存储库旨在简单、整洁和小型,因为我可以随时清理它并从 Jenkins 重建相关工件,我不想要代理和消耗本地磁盘资源。出于同样的原因,我不想通过向每个存储库询问每个工件来消耗 http 请求资源,特别是不向公共存储库询问内部资源。
  • 我明白其中的道理,我只是要求澄清一下。好问题,顺便说一句。

标签: maven


【解决方案1】:

我们使用内部 Nexus 实例并在那里配置了这样的东西。 Nexus 在Administration -> Routing 选项中有它,您可以在其中为groupId 定义掩码并指出应该使用哪些存储库。

当然,它需要内部 Nexus 成为开发人员使用的唯一存储库,然后配置任何外部存储库以进行代理或镜像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2011-09-17
    • 2016-10-18
    • 2022-12-19
    • 1970-01-01
    • 2012-09-13
    • 2019-08-30
    相关资源
    最近更新 更多