我有Nexus服务器,以及团队内共享的maven用户设置,其中包含
<mirrors>
<mirror>
<!--This sends everything else to /public
http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html
-->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.16.232:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
这就是所有在pom.xml中定义的存储库(包括默认的Maven Central)都是由Nexus提供的。
在Nexus中,新的存储库被添加到公共组中。
问题:还有更好的方法吗?目前其他开发人员不了解Nexus + Maven交互,当pom.xml中定义了新的存储库(Nexus没有代理)时,maven只会说“无法获取工件”。但不是“配置您的Nexus服务器”:) 其次我发现一些公共存储库也会从其他公共存储库缓存,所以最后我无法确定这个jar来自何处。
更新:我正在寻找最美丽,最简单,易于解释和理解的解决方案。
答案 0 :(得分:1)
我会从我最近的经历中提出一些想法,但我的感觉是你应该确保你对构建和各个团队与它的互动有一套明确的要求,并推动你的设计来自那些真实需求的构建环境。
提示。
1)我不会把镜子放在CI构建服务器上的任何地方。通知开发人员他们可以从他们想要的地方开发框中拉出来,但是当他们检查它时,如果无法从CI引用的nexus找到依赖关系,那么他们必须与你一起工作。这就把责任放在了它们身上。
2)这是很多存储库。我认为没有正式引用如此多的公共回购。我对这些回购特别不太了解,但是很多东西。而且听起来你正在经历重复。但是,您的公共组配置会告诉您罐子来自何处;该配置中的repos顺序将决定jar来自何处。所以,它总会从它找到的第一个位置拉出来。
答案 1 :(得分:1)
这实际上就是我在工作中完成它的确切方式。我们镜像大约30个公共回购,这是最简单的方法。开发人员都使用我们的nexus安装作为一站式购物,因为我们需要添加东西,它只是出现在公共回购中。这样做还可以让我们对人们正在使用的工件进行更精细的控制,因为我们只包含我们想要允许的东西,而不是世界上的所有东西。
我们确实有一个区别,我们有一个'仅发布'和'仅限快照'的回购,而不是一个巨大的公开回购。主要原因是我们可以有不同的缓存策略,但它在组织上也更好一些。
我对设置的唯一问题是,如果你想在不在网络(办公室或VPN)上进行构建,那么什么都不行。我通过在本地保留2个settings.xml文件并开启我需要的罕见场合来解决这个问题。