我们应该使用Nexus还是Artifactory进行Maven回购?


119

我们正在使用Maven进行大型构建过程(> 100个模块)。我们一直将外部依赖项存储在源代码管理中,并使用它来更新本地存储库。

但是,我们已经准备好毕业于可以缓存中央文件的本地存储库,这样我们就不必主动下载所有第3方(但我们仍然可以从中提取本地存储库)。另外,我们希望从每晚的构建中发布内部构建工件,以便开发人员不必构建世界。

我们正在考虑Nexus和Artifactory。是什么原因导致一个人偏爱另一个人?还有其他我们应该考虑的吗?


2
您的链接不太客观,这是另一边的反馈blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773,2009年

我认为您应该考虑使用像Apache或nginx这样的普通http服务器。它们是“无聊的技术”(mcfunley.com/choose-boring-technology)。
约翰·沃尔斯

5
@JohanWalles:在这种情况下更像是“不便和降低生产率的技术”。
Priidu Neemre '16

Answers:


74

我不了解Artifactory,但这是我使用Nexus的原因:

  • 简单的死安装(从1.2开始,也简单的升级)
  • 很好的网页界面
  • 易于维护,几乎没有管理开销
  • 为您提供最新安装的,损坏的工件和错误的RSS提要
  • 它可以对多个存储库进行分组,因此您可以镜像多个源,但是在settings.xml中只需要一个或两个条目即可。
  • 从Maven进行部署是开箱即用的(不需要WebDAV hack等)。
  • 免费
  • 您可以重定向访问路径(即,一些损坏的pom.xml需要从“ xxx”中获取“ abc”)。您可以修补Nexus中的错误,然后将请求重定向到工件真正所在的位置,而不用修补POM。

3
Nexus具有出色的网络用户界面,可用于创建可以清除SNAPSHOTS的定期计划的作业。Artifactory还没有这个。
HDave 2010年

118

我敢肯定,如果您只谈论存储来自“ mvn deploy”的二进制文件,那么两者都可以。

我们在整个升级过程中都非常广泛地使用Artifactory。很多项目,部署了许多快照,并代理了外部存储库。不是一个问题。我发现很难解释其他人如何遇到其数据库,索引或其他问题。像这样的事情在我们身上从未发生过。此外,Artifactory允许将数据存储在磁盘上,并且仅使用DB来存储元数据,这非常灵活(请参阅此处的更多内容)。

是什么让这些应用程序非常不同的是,他们对其他的构建工具和技术的集成方法。Nexus和Sonatype几乎锁定在Maven和m2eclipse上。他们忽略了其他任何东西,直到最近才开始进行自己专有的Hudson集成(请参阅其Maven 3网络研讨会)。 编辑:这不是真的了,因为2017年的Nexus给出了其他的构建工具一个更大的支持 编辑完的

Artifactory提供了很棒的Hudson,TeamCity和Bamboo集成以及Gradle / Ivy支持。因此,一旦您走出Sonatype“舒适区”(Maven,m2eclipse),Nexus便无法为您提供任何帮助,而Artifactory则与所有主要的构建工具融为一体。

实际上,能够在作业完成时从Hudson部署构建工件,而不是通过“ mvn deploy”进行部署,这是一个巨大的区别:Artifactory Hudson插件仅在构建作业成功完成后立即对所有工件进行原子式部署。“ mvn deploy”会在每个模块之后运行,如果构建作业在中间失败,则可以部署部分工件。在模块完成时从Maven进行部署,而不在作业完成时从构建服务器进行部署,这确实是一件坏事。

如您所见,Artifactory认为“盒子外面”,而Nexus认为“盒子外面”,并且只关心Maven和Maven工件。

他们基于云的Artifactory Online解决方案使Artifactory更易于访问。每月花费约80美元,您就可以拥有自己的Artifactory实例,而无需为此专门指定任何服务器。

Artifactory具有简单明了的REST API,不知道它如何在Nexus上工作。 Edit Nexus 还具有一个REST API,您也可以轻松使用它。

总而言之,对于Maven工件的基本存储,我认为两者都很好。但是,尽管Nexus停止了严格的“ Maven存储库管理器”,但Artifactory仍在继续,它是来自任何构建工具和CI服务器的通用二进制存储“二进制存储”。


9
抱歉,我在这里闻到FUD。Nexus当然不是“锁定在Maven和m2eclipse上”,它与Jenkins,TeamCity和Bamboo完美地集成在一起。它具有简单明了的REST API;每个Nexus功能都作为REST端点公开。不能说Nexus“只关心Maven和Maven工件”;它还支持.Net(NuGet),Gradle / Ivy,OSGI,并可以托管Yum RPM存储库。在工件存储方面,包括tar,zip,rar,par和标准的Java归档类型。
RCross

25
杜德(Dude),该回复是4年前发布的:)它不再与Maven有关?好了!
Evgeny Goldin 2014年

3
@EvgenyGoldin不会使他的评论的相关性降低(FUD部分除外^^)。
OddDev

4
既然这篇文章已有七年历史了,并且REST API或多或少是使用工具所必需的,那么Nexus似乎仍然对此感到厌倦。使用Nexus3,其余的API基本上是rpc;您必须上传一个小脚本来执行您想要执行的操作。另一方面,Artifactory似乎公开了经过深思熟虑的API,该API具有良好的文档编制。
thecoshman

27

Artifactory的支持这两个文件系统和数据库存储后端。存储是基于校验和的,并且相同的二进制文件仅存储一次,无论它们在存储库中出现多少次,这使得Artifactory的存储方式更加高效。由于这种架构,移动和复制也非常便宜(在Nexus中,没有用于移动/复制的REST-您必须在文件系统上移动内容,然后在存储库上执行纠正措施以使其知道内容已更改)。

另一个重要的区别是Artifactory与Hudson和TeamCity进行了独特的集成,以捕获有关与部署运行相关的已部署工件,已解决的依赖性和环境数据的信息,从而提供了完整的构建可追溯性。


1
Artifactory还支持S3持久性。
蒂姆·费雷尔

@TimFerrell并非不正确,但对于我通常在其中工作的大多数商店而言,其价格都过高。
Sander Verhagen

21

Artifactory将工件存储在数据库中,这意味着如果出现问题,所有工件都将消失。Nexus为您的珍贵文物使用了一个平面文件,因此您不必担心它们会全部丢失。


3
那就是对我们也有所不同的原因。我想这主要是妄想症,但令人欣慰的是,随时可以轻松检查系统。
2009年

4
因此,我们正计划从Artifactory切换到Nexus。
卡列姆

2
+1来自另一名腐败受害者;从那时起,我就一直使用Archiva和Nexus,而且两者看上去都相当不错。
SimonJ

73
这个答案已经过时了。现在可以将Artifactory配置为在文件系统上存储对象。
M. Dudley

37
只要我使用过Artifactory,它就已经对实际工件提供了文件系统支持。但是无论如何我都使用数据库,因为我们的主数据库服务器已复制并备份了。我看不到文件系统存储本质上比数据库安全。没什么反对Nexus的,只是想解决这个问题。
约书亚·戴维斯

9

如果您需要其中一个的“ Pro”功能(例如,分段存储,工件升级,NuGet),则需要考虑在其网站上显示的不同定价模型。

综上所述:

  • 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最基本的支持产品是每年2750美元)。


8

我刚刚对Artifactory 2和Nexus 1.3进行了一些研究。我将在这里列出我发现的主要区别:

  • Artifactory将元数据和可选的文件存储在DB中,Nexus会直接写入文件系统。有优点。和缺点。对于每种方法。DB支持事务,而在FS中存储的文件可以直接访问。
  • Artifactory对磁盘空间有更高的系统要求。
  • Artifactory支持LDAP,而Nexus仅提供付费版本。另一方面,适用于Nexus的免费LDAP插件可通过Google代码获得。

最完整的比较:http : //binary-repositories-comparison.github.io/


实际上,Artifactory现在是GPL。
布赖恩·福克斯

5
Nexus OSS现在支持Ldap的多个版本。
Brian Fox 2010年

1
LDAP 组的 Artifactory支持仍然是一个专业功能:jfrog.com/confluence/display/RTF/LDAP+Groups
Steven Magana-Zook

1
2015年7月更新:Codehaus现已死亡,因此矩阵迁移到binary-repositories-comparison.github.io
JBaruch 2015年

7

您应该使用Artifactory。它的最新版本是一次真正的跳跃。您可以增量备份存储库,这意味着您可以保存和维护所有工件,它具有易于使用的Web ui,并且设置起来也很容易,我非常喜欢推出新版本2.0


5

从学习者的角度来看,我注意到两者之间的某些特定差异。

  1. 尽管Jonas .war部署在Tomcat下,但目前尚不支持Sonatype .war部署。
  2. 目前,Sonatype没有为我提供可以快速站起来进行测试的Amazon Machine Image(AMI)。
  3. Bitnami提供了一个Artifactory AMI,它仅需花费几分钟即可站起来,需要花费更多的时间来配置,可能要花费数十分钟,具体取决于您要实现的目标。
  4. Artifactory在云中提供了SaaS版本的Artifactory,因此您可以专注于完成工作而不是基础架构。
  5. 我没有使用Nexus的经验,但至少在最初,我发现Artifactory非常直观且易于配置。
  6. 补充-我确实注意到《 Artifactory用户指南》(对于经验丰富的专业人士可能是不错的选择)对某些深入的解释有些许启发。例如,从RedHat的Jboss EAP Enterprise Repo开始,首先解压缩然后添加一个Repository。一切正常,但是当我尝试查看导入的工件时,Artifactory报告的工件为零?没有错误或警告,所以我现在要寻找一个解释。这正常还是不正常?doco中的一个简单解释可以迅速指出正确的方向。作为一名出色的贡献者,我正在向项目添加这些评论,以使其他初学者受益。

3

除了所有的政治/宗教,许可对于某些组织来说也有所不同。

Nexus 现在是GPL,现在是AGPLv3,现在是Eclipse Public License(EPL)

从产品版本2.1开始,Artifactory是Apache许可的 LGPLv3

出于比较的考虑,您可能还需要考虑Archiva。它是Apache 2.0许可的。


5
为什么,这是一个巨魔。Linux是GPL的事实是否会阻止组织使用Linux?将工具合并到程序中并使用它之间是有区别的。
Tim O'Brien

1
我本来不是要拖钓的,但我感谢您的观点。我从文本中删除了最高级。
扎克·汤普森

4
@tobrien:FWIW,一些组织(包括我的组织)在使用 GPL软件时会非常谨慎,担心会受到法律制裁。我不想讨论这种政策的(缺乏)智慧-我怀疑我们会完全同意。只是指出,这很重要。
扎克·汤普森

1
从2.1开始,Artifactory还是LGPL。
布赖恩·福克斯

1
@Zac @ user145026您是否将代码链接到Nexus库?如果没有,我不明白为什么GPL许可证是个问题。
Pascal Thivent 2010年

2

我看到Nexus的使用量正在增长,而人工工具的使用量通常保持稳定。

在此处输入图片说明

图片是从这里http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

也有矩阵比较http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix


3
1.该图片不准确,因为它仅依赖于Maven Central调用。除了Maven Central,还有其他下载内容。2. Codehaus现在已经死了,矩阵迁移到binary-repositories-comparison.github.io
JBaruch

真好 你有更好的照片吗?
rofrol

你可以在这里找到一些数字。
JBaruch

1
偏向Nexus,偏向jfrog-我不相信任何一组数字。
凯尔·威林

-2

Artifactory和Nexus都具有或多或少的相似功能集,但是Artifactory的LDAP支持使其比Nexus更具吸引力。虽然Nexus也具有LDAP支持,但在付费版本中:-(


1
Google代码上有一个适用于Nexus的开源LDAP插件。
布赖恩·福克斯

3
LDAP支持现在在的Nexus的免费版本,因为1.5.0
大卫·罗素

-2

嗯...我对人工制品的经验太糟糕了...但是我是一个相对较新手,所以请带一点盐。我的整体抱怨是,最近上传到Artifactory的jar文件似乎没有立即被索引-长达数小时之久-而且似乎没有强制这种方法的好方法。我已经尝试了各种似乎可以进行的操作,但没有成功。我一直在使用m2eclipse,将依赖项添加到我从ant转换的项目中。当我尝试添加刚添加到工件中的jar时,我希望它会在选择器中显示为选择项,但不会显示。

一位同事告诉我,他们已经安装了联系,到目前为止,他们喜欢它...但是我还不能保证。一旦IT可以找到我,我就要在Linux机器上安装它。


3
您指的是IDE(由m2eclipse插件下载和使用)的Nexus索引。这些索引会定期下载到客户端,并不意味着每次部署都会被消耗。Artifactory允许您计划或强制执行这些索引更新。仅供参考,Artifactory搜索(UI / REST)使用的索引是不同的,并且在部署新工件时会立即进行原子更新。像IntelliJ这样的工具通过使用Artifactory的REST API对存储库(而不是本地缓存的索引)运行搜索来利用此功能。
Yoav Landman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.