我们应该使用Nexus还是Artifactory来进行Maven Repo?

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

但是,我们准备gradle后可以caching中央,这样我们就不必主动下载所有第三方(但是我们仍然可以从本地回购)。 另外,我们希望从夜间版本发布我们的内部构build工件,以便开发人员不必构build世界。

我们正在考虑Nexus和Artifactory。 有什么理由比较喜欢一个呢? 还有其他我们应该考虑的吗?

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

  • 死简单的安装(并从1.2,死简单的升级,也)
  • 很好的networking用户界面
  • 易于维护,几乎没有pipe理开销
  • 为您提供最近安装的,已损坏的工件和错误的RSS源
  • 它可以将多个存储库分组,以便镜像多个源,但在settings.xml中只需要一个或两个条目
  • 从Maven部署开箱即可(无需WebDAV黑客等)。
  • 免费
  • 你可以redirect访问path(即一些破损的pom.xml需要“abc”从“xxx”)。 您可以修复Nexus中的错误并将请求redirect到工件所在的位置,而不是修补POM。

我敢肯定,如果你只是谈论从“ mvn deploy ”存储二进制文件,两者都会好的。

我们非常广泛地使用Artifactory进行所有升级。 大量的项目,部署的快照和外部回购代理。 没有一个单一的问题。 我发现很难解释其他人如何经历数据库,索引或其他任何问题。 没有任何事情发生在我们身上。 此外,Artifactory允许将数据存储在磁盘上,仅使用数据库来存储元数据,这非常灵活( 请参阅此处更多内容 )。

使这些应用程序非常不同的是他们与其他构build工具和技术集成的方法。 Nexus和Sonatype几乎locking在Maven和m2eclipse上。 他们忽视了其他任何东西,直到最近才开始在自己的专有Hudson集成上工作(参见他们的Maven 3networking研讨会 )。 编辑:这是不正确的,因为2017年Nexus给予更大的支持其他构build工具 编辑结束

Artifactory提供了令人敬畏的Hudson,TeamCity和Bamboo集成以及Gradle / Ivy支持。 所以,当你离开Sonatype的“舒适区域”(Maven,m2eclipse)时,Nexus不会给你任何东西,Artifactory会接受并协同所有主要的构build工具。

事实上,能够从Hudson部署构build工件时,工作完成后,而不是“ mvn deploy ”,这是一个巨大的差异:Artifactory Hudson插件一次完成所有工件的primefaces状的部署,只有当一个构build工作完成成功。 “ mvn deploy ”在每个模块之后运行,并且如果构build作业在中间失败,则可以部署一部分工件。 在模块完成时从Maven部署,而不是在作业完成时从构build服务器部署,实际上是一件坏事。

正如你所看到的,Artifactory认为“盒子外”,而Nexus认为“箱子内”,只关心Maven和Maven文物。

使Artifactory更容易访问的其他东西是基于云的Artifactory Online解决scheme 。 每月大约80美元,你有自己的Artifactory实例,不需要为它专用任何服务器。

Artifactory有一个简单而直接的REST API ,不知道它如何适用于Nexus。 编辑 Nexus 也有一个REST API ,您也可以轻松使用。

总而言之,对于Maven工件的基本存储,我认为两者都很好。 但是,当Nexus停止严格的“Maven仓库pipe理器”的时候,Artifactory继续作为任何构build工具和CI服务器的任何types的二进制文件的通用“二进制存储”。

Artifactory支持文件系统和数据库存储后端。 存储是基于校验和的,相同的二进制文件只存储一次,不pipe它们出现在repo中多less次,这使得Artifactory在存储方面更加高效。 移动和复制也是非常便宜的,因为这个架构(在Nexus里没有REST的移动/复制 – 你必须移动文件系统上的东西,然后对repo运行纠正措施,让它知道内容已经改变)。

另一个重要的区别是Artifactory与Hudson和TeamCity进行了独特的整合,用于捕获与构build运行相关的部署工件,已解决的依赖关系和环境数据的信息,从而提供完整的构build跟踪能力。

Artifactory将工件存储在数据库中,这意味着如果出现问题,所有工件都不见了。 Nexus使用一个平面文件为您的珍贵的文物,所以你不必担心他们都迷路了。

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

  • Artifactory将元数据和可选文件存储在数据库中,Nexus直接写入文件系统。 有优点。 和缺点。 为每个方法。 DB支持事务处理,而FS中存储的文件可以直接访问。
  • Artifactory有更高的系统要求,特别是磁盘空间。
  • Artifactory支持LDAP,而Nexus只支持付费版本。 另一方面,Google代码上提供了Nexus的免费LDAP插件。

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

你应该使用Artifactory它的最新版本是一个真正的跳跃你可以增量备份你的仓库,这意味着你可以让你所有的工件保存和维护它有一个易于使用的networking用户界面,很容易设置,我很喜欢它检查它的新版本2.0

如果您需要(例如分期付款回购,工件促销,NuGet)的“专业”function,那么您需要考虑在其网站上显示的不同定价模式。

综上所述:

  • Artifactory Pro
    • 你支付每台服务器
    • 你可以支付更多的服务时间
  • Nexus Pro
    • 每个位子付费,即有多less开发者下载文物
    • 支持服务仅限于周一至周五0800-2000 ET,无论您支付什么费用

无论您有多less用户,Nexus Pro都提供与Artifactory每年7,450美元的“Silver Value Pack”相当的支持服务。

$ 7,450 /年将为您购买约67个Nexus Pro座位(1-50 @ $ 108,其余$ 120)。

只有价格和支持,Nexus Pro是有道理的,直到你有67个用户,在这一点上Artifactory成为更便宜的select。

如果你在内部做所有的支持, 然而,这个魔术点大约有23个用户(Artifactory最基本的支持产品是每年2750美元)。

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

  1. Sonatype .war部署虽然在Tomcat下运行,但在Jboss应用服务器上不支持。
  2. Sonatype目前不提供给我一个Amazon Machine Image(AMI),我可以快速站起来testing。
  3. Artifactory AMI由Bitnami提供,只需要几分钟的时间就可以完成configuration,可能需要几十分钟,具体取决于您要实现的目标。
  4. Artifactory在云中提供Artifactory的SaaS版本,因此您可以专注于完成任务而不是基础设施。
  5. 我没有Nexus的经验,但我发现Artifactory非常直观,易于configuration,至less在最初。
  6. 添加 – 我注意到,Artifactory用户指南,这可能是一个经验丰富的专业人士,是一些深入的解释有点轻。 例如,开始,一个解压缩,然后join一个存储库,说RedHat的Jboss的EAP企业回购。 一切正常,但当我试图查看被导入的工件时,Artifactory报告零工件? 没有错误或警告,所以我现在正在寻找一个解释。 这是正常还是不正常? 多科的一个简单的解释可以很快的指出一个正确的方向。 作为一个很好的贡献者,我将这些意见添加到项目中,为其他初学者带来好处。

除了所有的政治/宗教之外,许可证对一些组织来说是有差别的

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

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

为了比较起见,您可能还需要考虑Archiva 。 这是Apache 2.0许可。

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

在这里输入图像说明

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

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

Artifactory和Nexus都有或多或less的类似function,但是Artifactory的LDAP支持使它比Nexus更具吸引力。 虽然Nexus也有LDAP支持,但付费版本:-(

嗯…我的经验与artifactory是可怕的…但我是一个相对的新手,所以拿一粒盐。 我的总体抱怨是,最近上传到Artifactory的jar文件似乎并没有马上被索引 – 就像在几个小时之内 – 似乎没有一个好办法来强制它。 我已经尝试了各种各样的事情,似乎他们应该工作,但没有。 我一直在使用m2eclipse,将依赖关系添加到我从ant转换的项目中。 当我尝试添加一个我刚刚添加到artifactory的jar时,我希望它在select器中显示为选项,但不是。

一位同事告诉我,他们已经安装了nexus,到目前为止他们还是喜欢它,但是我现在还不能担保。 一旦IT能find我,我即将在Linux上安装它。