通过内部Nexus代理所有Maven依赖库

6
我有一个项目,它有很多依赖项分布在许多远程仓库中,甚至这些依赖项有时也需要其他远程仓库。
我想创建一个稳定的构建环境,并希望我的本地Nexus安装程序代理项目的所有需求,以便我可以在设置一次后再次重现构建过程而不需要连接到互联网。
也就是说,我的.m2/settings.xml文件将包含:
<mirrors>
    <mirror>
        <id>my.public</id>
        <url>http://localhost:8081/nexus/content/groups/public</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

当然,这还不够。Nexus不会随意代理我从maven安装中获得的每个请求。
目前,据我所知,也是我让它正常工作的方法,对于我遇到的每个远程仓库,我都在Nexus中创建了一个代理,并将其添加到公共组中。
在我的情况下,这些像是15或20个远程仓库。它们大多数是我的软件包的进一步依赖项,即“直到我运行maven构建并命中它们之前才意识到我需要它们”。到目前为止,我发现它们大多被引用在父POM中。
我的问题是:是否有一种方法可以配置Nexus,以便我不需要手动添加每个仓库?
当我重新阅读我的问题时,它几乎听起来像我想要一个真正的HTTP代理,但那么Nexus有什么意义呢?当然,这是一个修辞问题,但我如何在不手动添加它们的情况下解决此问题?
我在Nexus文档中找到的唯一内容是 http://www.sonatype.com/books/nexus-book/reference/config-sect-custom.html

...您可能会遇到无法从本地Nexus安装检索工件的项目

并且

...将此存储库作为新代理存储库添加到Nexus中,然后将新代理存储库添加到公共组中

2个回答

2

我不知道有没有这种功能。我们目前通过Nexus安装程序镜像了30-40个仓库,就是为了这个原因。我们在settings.xml中使用类似的镜像语句,强制所有人使用我们的仓库作为一站式购物中心。但是,我们会通过政策来执行开发人员不在项目的pom文件中添加仓库的规定。相反,他们会提交请求以添加代理。


1
您可以在Maven的settings.xml文件中定义镜像,使用通配符来表示元素:
    <settings>
      ...
      <mirrors>
        <mirror>
          <id>internal-repository</id>
          <name>Repository name</name>
          <url>http://repo.mycompany.com/proxy</url>
          <mirrorOf>*</mirrorOf>
        </mirror>
      </mirrors>
      ...
    </settings>

镜像将用于所有存储库请求。 Maven文档说明如下:
此设置在使用内部公司存储库并使用Maven Repository Manager代理外部请求时最有用。
并补充道:
存储库必须包含所有所需的工件,或能够代理请求到其他存储库。
这在https://maven.apache.org/guides/mini/guide-mirror-settings.html中有记录(请参见“使用单个存储库”部分)。

1
谢谢,我猜吧;虽然已经晚了10年,而且我不再使用Java了。 - mark
嗯,这可能对其他人有用。如果您正在搜索“代理”设置,则该设置的名称(“镜像”)并不明显。 - pys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接