我们正在使用Maven进行大型构建过程(> 100个模块).我们一直将外部依赖项存储在源代码控制中,并使用它来更新本地仓库.
但是,我们已准备好升级到可以缓存中心的本地仓库,这样我们就不必主动下载所有第三方(但我们仍然可以从本地仓库中获取).此外,我们希望从每晚构建中发布我们的内部构建工件,以便开发人员不必构建世界.
我们正在考虑Nexus和Artifactory.优先选择其中一个的原因是什么?我们应该考虑其他人吗?
我敢肯定,如果你只谈论从" mvn deploy
"中存储二进制文件,那么两者都可以.
我们非常广泛地使用Artifactory进行所有升级.大量项目,部署的大量快照和外部回购代理.没问题.我发现很难解释其他人如何遇到DB,索引或其他任何问题.没有发生在我们身上的事情.此外,Artifactory允许在磁盘上存储数据并且仅使用DB来存储元数据,它非常灵活(请参阅此处).
是什么让这些应用程序非常不同的是,他们对其他的构建工具和技术的集成方法.Nexus和Sonatype几乎被Maven和m2eclipse锁定.他们忽略了其他任何事情,并且最近才开始使用他们自己专有的Hudson集成(参见他们的Maven 3网络研讨会).
编辑:从2017年开始不再如此.Nexus 为其他构建工具 End of Edit提供了更大的支持
Artifactory提供了令人敬畏的Hudson,TeamCity和Bamboo集成以及Gradle/Ivy支持.因此,一旦你走出Sonatype"舒适区"(Maven,m2eclipse),Nexus就什么都没给你,Artifactory拥抱并与所有主要的构建工具合作.
实际上,能够从Hudson部署构建工件,当作业完成时,而不是" mvn deploy
"是一个巨大的区别:Artifactory Hudson插件只在构建作业成功完成时,立即对所有工件进行原子式部署." mvn deploy
"在每个模块之后运行,如果构建作业在中间失败,则可以部署一组部分工件.在模块完成时从Maven部署而不是在作业完成时从构建服务器部署是非常糟糕的事情.
如你所见,Artifactory认为"在盒子外面",而Nexus认为"在盒子里面"并且只关心Maven和Maven文物.
使Artifactory更容易访问的其他东西是他们基于云的Artifactory Online解决方案.每月大约80美元,你有自己的Artifactory实例,不需要专门为它服务.
Artifactory有一个简单而直接的REST API,不知道它如何适用于Nexus. 编辑 Nexus 还有一个REST API,您也可以轻松使用它.
总而言之,对于Maven工件的基本存储,我认为两者都很好.但是当Nexus停止严格的"Maven存储库管理器"时,Artifactory会继续,从任何构建工具和CI服务器开始,作为任何类型二进制文件的通用"二进制存储".
我不知道Artifactory,但这是我使用Nexus的原因:
死简单安装(自1.2以来,死亡简单升级也是如此)
非常好的Web UI
易于维护,几乎没有管理开销
为您提供最近安装的,损坏的工件和错误的RSS源
它可以对多个存储库进行分组,因此您可以镜像多个源,但在settings.xml中只需要一个或两个条目
从Maven部署开箱即用(不需要WebDAV黑客等).
免费
您可以重定向访问路径(即某些损坏的pom.xml需要"abc"来自"xxx").您可以修复Nexus中的错误并将请求重定向到工件实际所在的位置,而不是修补POM.
Artifactory的支持这两个文件系统和数据库存储后端.存储是基于校验和的,并且相同的二进制文件只存储一次,无论它们出现在repo中多少次,这使得Artifactory在存储方面更加高效.由于这种架构,移动和复制也非常便宜(在Nexus中没有用于移动/复制的REST - 你必须在文件系统上移动东西,然后在repo上运行纠正操作以让它知道内容已经改变).
另一个重要的区别是Artifactory与Hudson和TeamCity的独特集成,用于捕获有关已部署工件,已解析依赖项和与构建运行相关的环境数据的信息,从而提供完整的构建可跟踪性.
Artifactory将工件存储在数据库中,这意味着如果出现问题,所有工件都将消失.Nexus使用平面文件作为您珍贵的文物,因此您不必担心它们都会迷路.
如果您需要"Pro"功能(例如Staging repos,artifact artifact,NuGet),那么您需要考虑在其网站上显示的不同定价模型.
http://www.jfrog.com/home/v_pricing
http://www.sonatype.com/nexus/purchase
综上所述:
Artifactory Pro
你按服务器付费
您可以为增加服务时间支付更多费用
Nexus Pro
你支付每个席位,即有多少开发人员下载工件
无论您支付多少,支持服务仅限于周一至周五0800-2000 ET
无论您有多少用户,Nexus Pro都提供的支持服务大致相当于Artifactory的7,450美元/年"Silver Value Pack".
7,450美元/年将为您购买约67个Nexus Pro座位(1-50 @ $ 108,其余@ $ 120).
仅在价格和支持上,Nexus Pro就有意义,直到你有67个用户,此时Artifactory成为更便宜的选择.
如果你在内部做所有的支持; 然而,这个魔术点大约是23个用户(Artifactory最基本的支持服务是每年2,750美元).
我对Artifactory 2和Nexus 1.3进行了一些研究.我将在此列出我发现的主要差异:
Artifactory在DB中存储元数据和可选文件,Nexus直接写入文件系统.有专业人士.和利弊.对于每种方法.DB支持事务,而在FS存储的文件中可以直接访问.
Artifactory具有更高的系统要求,特别是对于磁盘空间.
Artifactory具有LDAP支持,而Nexus仅支持付费版本.另一方面,Nexus的免费LDAP插件可在Google代码上找到.
最完整的比较:http://binary-repositories-comparison.github.io/
你应该使用Artifactory它的最新版本是一个真正的跳跃你可以逐步备份你的存储库,这意味着你可以保存和维护所有的工件它有一个易于使用的web ui,并且很容易设置我很喜欢它很多检查推出新版本2.0
从学习者的角度来看,我注意到两者之间的一些具体差异.
当时Jboss应用服务器不支持Sonatype .war部署,尽管它确实在Tomcat下运行.
Sonatype目前没有为我提供亚马逊机器映像(AMI),我可以快速站起来测试.
Bitnami提供Artifactory AMI,只需几分钟就可以站起来,再花几分钟来配置,可能需要几十分钟才能完成,这取决于你想要达到的目标.
Artifactory在云中提供了Artifactory的SaaS版本,因此您可以专注于完成任务而不是基础架构.
我没有使用Nexus的经验,但我发现Artifactory非常直观且易于配置,至少在最初阶段.
添加 - 我注意到Artifactory用户指南,对于经验丰富的专业人士来说可能没问题,对于一些深入的解释有点轻松.例如,RedHat的Jboss EAP Enterprise Repo说,开始时,一个解压缩,然后加载一个存储库.一切顺利但是当我试图查看导入的工件Artifactory报告零工件?没有错误或警告所以我现在正在寻找解释.这是正常还是不正常?在doco中的简单解释可以快速指出一个正确的方向.作为一个好的贡献者,我将这些评论添加到项目中,以便其他初学者受益.