ChatGPT解决这个技术问题 Extra ChatGPT

我们应该将 Nexus 或 Artifactory 用于 Maven 存储库吗? [关闭]

关闭。这个问题是基于意见的。它目前不接受答案。想改进这个问题?更新问题,以便可以通过编辑这篇文章用事实和引用来回答它。去年关闭。改进这个问题

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

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

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

您的链接不太客观,这是对方的回复blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
我认为您应该考虑像 Apache 或 nginx 这样的普通 http 服务器。它们是“无聊的技术”(mcfunley.com/choose-boring-technology)。
@JohanWalles:在这种情况下更像是“不方便和降低生产力的技术”。

I
Ismail H

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

我们非常广泛地使用 Artifactory,并在此过程中进行所有升级。许多项目,部署的大量快照和代理的外部存储库。没有一个问题。我发现很难解释其他人如何遇到其数据库、索引或其他任何问题。类似的事情从未发生在我们身上。此外,Artifactory 允许将数据存储在磁盘上,并且仅使用数据库来存储元数据,它非常灵活(see more here)。

使这些应用程序非常与众不同的是它们与其他构建工具和技术集成的方法。 Nexus 和 Sonatype 几乎都锁定在 Maven 和 m2eclipse 上。他们忽略了其他任何事情,直到最近才开始研究他们自己的专有 Hudson 集成(请参阅他们的 Maven 3 webinar)。 编辑:自 2017 年起不再适用,Nexus 给出a much larger support for other build tools 编辑结束

Artifactory 提供了很棒的 Hudson, TeamCity and Bamboo integrationGradle / Ivy 支持。因此,当您走出 Sonatype“舒适区”(Maven、m2eclipse)时,尽管 Nexus 没有给您任何帮助,但 Artifactory 拥抱并与所有主要的构建工具协作。

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

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

使 Artifactory 更易于访问的其他因素是他们的 cloud-based Artifactory Online solution。每月大约 80 美元,您就拥有了自己的 Artifactory 实例,无需为它专门配置任何服务器。

Artifactory 有一个 simple and straightforward REST API,不知道它对 Nexus 是如何工作的。 编辑 Nexus has also a REST API,您也可以轻松使用。

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


对不起,我在这里闻到了 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 归档类型一起包括在内。
伙计,这个回复是 4 年前发布的 :) 不再是关于 Maven 了吗?那就好!
@EvgenyGoldin 不会使他的评论不那么相关(FUD 部分除外^^)。
现在这篇文章已经七年了,而且 REST apis 或多或少是强制性的工具,Nexus 似乎仍然在这方面很糟糕。使用 Nexus3 还有其他 API 基本上是 rpc;你必须上传一个小脚本来执行你想做的事情。另一方面,Artifactory 似乎公开了一个经过深思熟虑的 API,该 API 具有良好的文档。
A
Aaron Digulla

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

非常简单的安装(从 1.2 开始,也有非常简单的升级)

非常好的网络用户界面

易于维护,几乎没有管理开销

为您提供最近安装、损坏的工件和错误的 RSS 提要

它可以对多个存储库进行分组,因此您可以镜像多个源,但在 settings.xml 中只需要一个或两个条目

从 Maven 部署开箱即用(不需要 WebDAV hack 等)。

免费

您可以重定向访问路径(即一些损坏的 pom.xml 需要来自“xxx”的“abc”)。您可以修复 Nexus 中的错误并将请求重定向到工件实际所在的位置,而不是修补 POM。


Nexus 具有出色的 Web UI,可用于创建可以清除 SNAPSHOTS 的定期计划作业。 Artifactory(还)没有这个。
Y
Yoav Landman

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

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


Artifactory 还支持 S3 持久性。
@TimFerrell,并非不真实,但对于我通常工作的大多数商店来说,价格高得令人望而却步。
B
Brian Fox

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


这也是对我们产生影响的原因。我想这主要是偏执狂,但很高兴知道随时检查系统都很容易。
因此,我们计划从 Artifactory 切换到 Nexus。
+1 来自另一位腐败受害者;从那时起,我就使用了 Archiva 和 Nexus,它们看起来都非常可靠。
这个答案已经过时了。 Artifactory 现在可以配置为在文件系统上存储对象。
只要我使用过 Artifactory,它就已经为实际的工件提供了文件系统支持。但无论如何我都使用数据库,因为我们的主数据库服务器是复制和备份的。我看不出文件系统存储在本质上比数据库更安全。没有反对 Nexus,只是想澄清这一点。
R
RCross

如果您需要其中任何一个的“Pro”功能(例如 Staging repos、工件促销、NuGet),那么您需要考虑不同的定价模型,这些定价模型显示在他们的网站上。

http://www.jfrog.com/home/v_pricing

http://www.sonatype.com/nexus/purchase

总之:

您为每台服务器付费的 Artifactory Pro 您可以为增加的服务时间支付更多费用

您为每台服务器付费

您可以为增加的服务时间支付更多费用

Nexus Pro 您按席位付费,即有多少开发人员下载工件支持服务仅限周一至周五 0800-2000 ET,无论您支付多少费用

您为每个席位付费,即有多少开发人员下载了工件

支持服务仅限美国东部时间周一至周五 0800-2000,无论您支付多少费用

无论您有多少用户,Nexus Pro 提供的支持服务大致相当于 Artifactory 每年 7,450 美元的“银级超值包”。

7,450 美元/年将为您购买大约 67 个 Nexus Pro 席位(1-50 个 @ 108 美元,其余的 @ 120 美元)。

仅就价格和支持而言,Nexus Pro 是有意义的,直到您拥有 67 个用户,此时 Artifactory 成为更便宜的选择。

如果您在内部提供所有支持;然而,这个神奇的点是大约 23 个用户(Artifactory 最基本的支持服务是 2,750 美元/年)。


S
Sergey

我最近对 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。
Nexus OSS 现在有几个版本的 Ldap 支持。
对 LDAP groups 的 Artifactory 支持仍然是一项专业功能:jfrog.com/confluence/display/RTF/LDAP+Groups
2015 年 7 月更新:Codehaus 现在已经死了,所以矩阵迁移到 binary-repositories-comparison.github.io
佚名

你应该使用 Artifactory 它的最新版本是一个真正的跳跃你可以增量备份你的存储库,这意味着你可以保存和维护所有的工件它有一个易于使用的 web ui 并且非常容易设置我非常喜欢它检查推出新版本 2.0


u
user3175893

从学习者的角度来看,我注意到两者之间的一些具体差异。

当时 Jboss 应用服务器不支持 Sonatype .war 部署,尽管它确实在 Tomcat 下运行。 Sonatype 目前没有为我提供 Amazon 系统映像 (AMI),我可以快速站起来进行测试。一个 Artifactory AMI 由 Bitnami 提供,只需几分钟即可站起来,然后再配置几分钟,可能需要几十分钟,具体取决于您要实现的目标。 Artifactory 在云中提供 SaaS 版本的 Artifactory,因此您可以专注于完成工作,而不是基础设施。我没有使用 Nexus 的经验,但我发现 Artifactory 非常直观且易于配置,至少在最初是这样。补充 - 我确实注意到 Artifactory 用户指南,对于经验丰富的专业人士来说可能没问题,但对于一些深入的解释来说有点轻率。例如,一开始,解压缩然后添加一个存储库,比如 RedHat 的 Jboss EAP Enterprise Repo。一切都很好,但是当我尝试查看导入的工件时 Artifactory 报告零工件?没有错误或警告,所以我现在正在寻找解释。这是正常还是不正常? doco 中的一个简单解释可以快速指出正确的方向。作为一个优秀的贡献者,我将这些评论添加到项目中,以使其他初学者受益。


Z
Zac Thompson

撇开所有政治/宗教不谈,许可对某些组织产生了影响。

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

Artifactory 从产品的 2.1 版开始获得 Apache 许可 LGPLv3 许可。

您可能还想考虑 Archiva,只是为了比较。它是 Apache 2.0 许可的。


为什么,这是一个巨魔。 Linux 是 GPL 的事实是否会阻止组织使用它?将工具合并到程序中和使用它是有区别的。
我不是故意拖钓,但我很欣赏你的观点。我已经从文本中删除了最高级。
@tobrien:FWIW,一些组织(包括我的)在使用 GPL 软件时非常谨慎,担心法律曝光。我不想讨论这种政策的(缺乏)智慧——我怀疑我们会完全同意。只是指出对某些人来说,这很重要。
从 2.1 开始,Artifactory 无论如何都是 LGPL。
@Zac @user145026 您是否将代码链接到 Nexus 库?如果不是,我不明白为什么 GPL 许可证是一个问题。
r
rofrol

我看到 Nexus 的使用量正在增长,而 Artifcatory 的使用量一般保持不变。

https://i.stack.imgur.com/XbFss.png

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

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


1. 此图不准确,因为它仅依赖于 Maven Central 调用。 Maven Central 之外还有下载。 2. Codehaus 现在死了,矩阵迁移到binary-repositories-comparison.github.io
好的。你有更好的图吗?
您可以找到一些数字 here
偏向 Nexus,偏向 jfrog - 我不会相信任何一组数字。
V
Vinod Singh

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


谷歌代码上有一个用于 Nexus 的开源 LDAP 插件。
LDAP 支持现在在 Nexus 的免费版本中,自 1.5.0 起
u
user494078

嗯……我在人工制品方面的经验很糟糕……但我是一个相对新手,所以对它持保留态度。我的总体抱怨是最近上传到 Artifactory 的 jar 文件似乎没有立即被索引 - 就像几个小时一样 - 似乎没有一个好的方法来强制它。我尝试了各种看起来好像它们应该起作用的东西,但没有。我一直在使用 m2eclipse,将依赖项添加到我从 ant 转换的项目中。当我尝试添加一个刚刚添加到 artifactory 的 jar 时,我希望它会在选择器中显示为一个选项,但事实并非如此。

一位同事告诉我,他们已经安装了 nexus,到目前为止他们喜欢它……但我还不能保证。只要 IT 能找到我,我就会将它安装在 Linux 机器上。


您指的是 IDE 下载和使用的 Nexus 索引,在您的情况下 - 由 m2eclipse 插件。这些索引会定期下载到客户端,并不意味着在每次部署时都会使用。 Artifactory 允许您安排这些索引更新或强制它。仅供参考,Artifactory 搜索 (UI/REST) 使用的索引是不同的,并且作为部署新工件的一部分会立即自动更新。像 IntelliJ 这样的工具通过使用 Artifactory 的 REST API 对存储库而不是本地缓存的索引运行搜索来利用这一点。