我使用Apache Archiva建立了一个Maven 2存储库(调用'dev存储库'),它存放了我的私有项目的工件。
如果我构建了我自己项目的工件,比如说group1:cat,而cat依赖于{group1:dog,commons:collection}。 group1:cat和group1:dog位于dev存储库中,commons:集合在Central中。
现在,当我构建group1:cat时,maven将获取group1:dog和commons:collection,问题是maven将始终在dev存储库和中央存储库中搜索以查找依赖项,但我想要的是搜索group1 :只在dev存储库中存储,并且搜索公共:仅在中央存储库中收集。我有中央镜像说中央镜像1和中央镜像2,所以如何配置maven所以它将搜索公共:集合在默认的中央存储库和中央镜像1,2等,并且不会打扰我的开发者存储库?
答案 0 :(得分:1)
我的设置使用我的本地Archiva实例代理中心(以及其他第三方存储库)。在我的超级pom中,我已将我的存储库更改为仅指向我当地的Archiva,而不是搜索中心。一切都通过我的本地代理进入。
这不是你所要求的,但我认为这是一个合适的设置。
然后,您可以使用Archiva的黑/白名单来告诉它搜索内容的位置。
答案 1 :(得分:1)
(...)我想要的是它只搜索group1:dog in dev存储库,并搜索commons:仅在中央存储库中收集。
我不知道如何实现这一点,我认为这是不可能的。 maven怎么能知道给定工件的“源”存储库?
但实际上,为什么不让一切都通过Archiva?对于所有请求,不使用Archiva有什么意义?如果你不希望maven检查两个存储库的依赖关系,那么这似乎是一个非常明显的解决方案。此外,人们通常不希望直接依赖于企业环境中的中心(例如,如果它失败,你就不能再工作了)。不,真的,我不明白。
所以,我只是将Archiva声明为mirrorOf
所有存储库,如下所示:
<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
...
</settings>