我们应该使用Nexus或Artifactory进行Maven回购吗?

时间:2008-12-13 03:32:02

标签: maven-2 nexus artifactory

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

但是,我们已准备好升级到可以缓存中心的本地仓库,这样我们就不必主动下载所有第三方(但我们仍然可以拥有本地仓库)。此外,我们希望从夜间构建中发布内部构建工件,以便开发人员不必构建世界。

我们正在考虑Nexus和Artifactory。优先选择其中一个的原因是什么?我们应该考虑其他人吗?

12 个答案:

答案 0 :(得分:115)

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

我们非常广泛地使用Artifactory进行所有升级。大量项目,部署的大量快照和外部回购代理。没问题。我发现很难解释其他人如何遇到DB,索引或其他任何问题。没有发生在我们身上的事情。此外,Artifactory允许在磁盘上存储数据并且仅使用DB来存储元数据,它非常灵活(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拥抱并与所有主要的构建工具合作。

事实上,能够从Hudson部署构建工件,当作业完成时,而不是“mvn deploy”是一个巨大的区别: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服务器。

答案 1 :(得分:71)

我不知道Artifactory,但这是我使用Nexus的原因:

  • 死简单安装(以及1.2,死亡简单升级)
  • 非常好的网络用户界面
  • 易于维护,几乎没有管理开销
  • 为您提供最近安装的,已损坏的工件和错误的RSS源
  • 它可以对多个存储库进行分组,因此您可以镜像多个源但在settings.xml中只需要一个或两个条目
  • 从Maven部署开箱即用(不需要WebDAV黑客攻击等)。
  • 它是免费的
  • 您可以重定向访问路径(即某些损坏的pom.xml需要“a.b.c”来自“xxx”)。您可以修复Nexus中的错误,并将请求重定向到工件所在的位置,而不是修补POM。

答案 2 :(得分:27)

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

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

答案 3 :(得分:22)

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

答案 4 :(得分:9)

如果您需要“Pro”功能(例如Staging repos,artifact artifact,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最基本的支持服务是每年2,750美元)。

答案 5 :(得分:8)

我对Artifactory 2和Nexus 1.3进行了一些研究。我将在此列出我发现的主要差异:

  • Artifactory在DB中存储元数据和可选文件,Nexus直接写入文件系统。有专业人士。和利弊。对于每种方法。 DB支持事务,而在FS存储的文件中可以直接访问。
  • Artifactory具有更高的系统要求,尤其是磁盘空间。
  • Artifactory具有LDAP支持,而Nexus仅支持付费版本。另一方面,Nexus的免费LDAP插件可在Google代码上找到。

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

答案 6 :(得分:7)

你应该使用Artifactory 它的最新版本是一个真正的跳跃 您可以逐步备份存储库,这意味着您可以保存和维护所有工件 它有一个易于使用的网络用户界面 并且很容易设置 我非常喜欢它 看看它的新版本2.0

答案 7 :(得分:5)

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

  1. 当时Jboss应用服务器不支持Sonatype .war部署,尽管它确实在Tomcat下运行。
  2. Sonatype目前不提供亚马逊机器映像(AMI),我可以快速站起来测试。
  3. Artnamory AMI由Bitnami提供,只需几分钟就可以站起来,再花几分钟来配置,可能需要几十分钟才能完成,这取决于你想要达到的目标。
  4. Artifactory在云中提供了Artifactory的SaaS版本,因此您可以专注于完成任务而不是基础架构。
  5. 我没有使用Nexus的经验,但我发现Artifactory非常直观且易于配置,至少在最初阶段。
  6. 添加 - 我注意到Artifactory用户指南,对于经验丰富的专业人士来说可能没问题,对于一些深入的解释有点轻松。例如,RedHat的Jboss EAP Enterprise Repo说,开始时,一个解压缩,然后加载一个存储库。一切顺利但是当我试图查看导入的工件Artifactory报告零工件?没有错误或警告所以我现在正在寻找解释。这是正常还是不正常?在doco中的简单解释可以快速指出一个正确的方向。作为一个好的贡献者,我将这些评论添加到项目中,以造福其他初学者。

答案 8 :(得分:3)

除了所有政治/宗教外,许可证对某些组织有所帮助。

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

Artifactory是 Apache许可 LGPLv3,自产品版本2.1起获得许可。

您可能还想考虑Archiva,仅供比较。它是Apache 2.0许可的。

答案 9 :(得分:1)

我看到Nexus的使用率正在增长,而Artifactory的使用率通常保持不变。

enter image description here

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

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

答案 10 :(得分:-2)

嗯......我对神器的经历太糟糕了......但我是一个相对新手所以所以带上一粒盐。我的总体抱怨是,最近上传到Artifactory的jar文件似乎没有立即编入索引 - 就像几个小时一样 - 并且似乎没有一种强制它的好方法。我尝试了各种各样的东西,好像它们应该有效,但没有。我一直在使用m2eclipse,将依赖项添加到我正在从ant转换的项目中。当我尝试添加一个我刚刚添加到神器中的jar时,我希望它在选择器中显示为选择,但它没有。

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

答案 11 :(得分:-2)

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