我们应该使用 Nexus 还是 Artifactory 来构建 Maven 存储库?
-
21-08-2019 - |
题
我们使用 Maven 进行大型构建过程(> 100 个模块)。我们一直将外部依赖项存储在源代码管理中,并使用它来更新本地存储库。
然而,我们已经准备好升级到可以缓存中央的本地存储库,这样我们就不必主动下载所有第三方(但我们仍然可以从本地存储库中提取)。此外,我们希望发布夜间构建的内部构建工件,以便开发人员不必构建世界。
我们正在考虑 Nexus 和 Artifactory。选择其中一种而不是另一种的原因是什么?还有其他我们应该考虑的吗?
解决方案
我不了解 Artifactory,但以下是我使用 Nexus 的原因:
- 安装非常简单(从 1.2 开始,升级也非常简单)
- 非常好的网络用户界面
- 易于维护,几乎没有管理开销
- 为您提供最近安装的、损坏的工件和错误的 RSS 源
- 它可以对多个存储库进行分组,以便您可以镜像多个源,但只需要在 settings.xml 中包含一两个条目
- 从 Maven 进行部署是开箱即用的(不需要 WebDAV 黑客等)。
- 免费
- 您可以重定向访问路径(即一些损坏的 pom.xml 需要“xxx”中的“a.b.c”)。您可以修复 Nexus 中的错误并将请求重定向到工件真正所在的位置,而不是修补 POM。
其他提示
我确信如果您只谈论存储来自“的二进制文件mvn deploy
“两者都会做得很好。
我们非常广泛地使用 Artifactory 并进行所有升级。许多项目、部署的大量快照和代理的外部存储库。没有一个问题。我发现很难解释其他人如何经历其数据库、索引或其他任何问题。我们从来没有发生过这样的事。另外,Artifactory允许将数据存储在磁盘上,只使用DB来存储元数据,非常灵活(在这里查看更多内容).
是什么让这些应用程序 非常 不同之处在于他们与其他构建工具和技术集成的方法。 Nexus 和 Sonatype 几乎锁定在 Maven 和 m2eclipse 上。他们忽略了其他任何事情,直到最近才开始致力于他们自己专有的 Hudson 集成(请参阅他们的 Maven 3 网络研讨会).
编辑: 自 2017 年 Nexus 发布以来,这已不再正确 对其他构建工具的更大支持 编辑结束
Artifactory 提供了一个很棒的 Hudson、TeamCity 和 Bamboo 集成, , 和 摇篮 / 常春藤 支持。因此,虽然一旦您走出 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 是如何工作的。编辑 关系 还有一个 REST API 您也可以轻松使用。
总而言之,对于 Maven 工件的基本存储,我认为两者都很好。 但是,虽然 Nexus 不再是严格意义上的“Maven 存储库管理器”,但 Artifactory 仍在继续,成为来自任何构建工具和 CI 服务器的任何类型的二进制文件的通用“二进制文件存储”。
Artifactory的支撑件的两个的文件系统和数据库存储后端。存储校验和基于二进制文件相同的存储只有一次,不管他们有多少次出现在回购,这使得Artifactory的更高效的存储明智的。移动和复制也很便宜,因为这种架构的(在的Nexus没有休息移动/复制 - 你必须在文件系统上移动的东西,然后在回购运行的纠正措施,以让它知道内容发生了变化)。
另一个重要的区别是Artifactory的具有Hudson和TeamCity的独特的集成,用于捕获有关部署的工件,解析的依赖,并与构建运行,它提供了完整的构建可追溯性相关联的环境数据的信息。
Artifactory的存储在数据库中,这意味着,如果出了问题,所有的文物都不见了的工件。 Nexus采用平面文件为您的珍贵文物,所以你不必担心他们所有迷路。
如果您需要其中任何一个的“Pro”功能(例如暂存存储库、工件升级、NuGet),那么您需要考虑其网站上显示的不同定价模型。
总之:
- Artifactory专业版
- 你付钱 每台服务器
- 您可以支付更多费用来增加服务时间
- Nexus Pro
- 你付钱 每个座位, , IE。有多少开发者下载工件
- 支持服务仅限东部时间周一至周五 0800-2000,无论您支付多少钱
无论您拥有多少用户,Nexus Pro 都能提供大致相当于 Artifactory 每年 7,450 美元的“银牌超值包”的支持服务。
每年 7,450 美元将为您购买大约 67 个 Nexus Pro 席位(1-50 个 @ 108 美元,其余 @ 120 美元)。
仅就价格和支持而言,Nexus Pro 是有意义的,直到用户达到 67 名,此时 Artifactory 就成为更便宜的选择。
如果您在内部提供所有支持;然而,这个神奇点是大约 23 个用户(Artifactory 最基本的支持服务是 2,750 美元/年)。
我最近对 Artifactory 2 和 Nexus 1.3 做了一些研究。我将在这里列出我发现的主要差异:
- Artifactory 将元数据和可选文件存储在数据库中,Nexus 直接写入文件系统。有优点。和缺点。对于每种方法。DB支持事务,而FS中存储的文件可以直接访问。
- Artifactory 对系统要求较高,尤其是磁盘空间。
- Artifactory 支持 LDAP,而 Nexus 仅在付费版本中提供。另一方面,Google 代码上提供了适用于 Nexus 的免费 LDAP 插件。
您应该使用Artifactory的 它的最新版本是一个真正的跳跃 你可以备份你的增量资源库,这意味着你可以有你所有的文物保存和维护 它具有一个易于使用的web界面 并且是很容易设置 我很喜欢它了很多 检查出其新版本2.0
从学习者的角度来看,我注意到两者之间的一些具体差异。
- 当时 Jboss 应用程序服务器不支持 Sonatype .war 部署,尽管它确实在 Tomcat 下运行。
- 目前,Sonatype 没有为我提供可以快速进行测试的亚马逊机器映像 (AMI)。
- Artifactory AMI 由 Bitnami 提供,只需几分钟即可启动,再花几分钟进行配置,可能需要几十分钟,具体取决于您想要实现的目标。
- Artifactory 在云中提供 Artifactory 的 SaaS 版本,因此您可以专注于完成工作而不是基础设施。
- 我没有使用 Nexus 的经验,但我发现 Artifactory 非常直观且易于配置,至少在最初是这样。
- 添加 - 我确实注意到 Artifactory 用户指南对于经验丰富的专业人士来说可能没问题,但对于一些深入的解释来说有点简单。例如,一开始,先解压然后添加一个存储库,如 RedHat 的 Jboss EAP Enterprise Repo 所示。一切都很顺利,但是当我尝试查看导入的工件时,Artifactory 报告零工件?没有错误或警告,所以我现在正在寻找解释。这是正常还是不正常?doco 中的简单解释可以快速指明正确的方向。作为一名优秀的贡献者,我将这些评论添加到项目中,以造福其他初学者。
撇开政治/宗教不谈,许可对某些组织来说是有影响的。
联系是 通用公共许可证 现在 AGPLv3 现在 Eclipse 公共许可证 (EPL).
人工工厂是 Apache 许可 LGPLv3 自产品 2.1 版起获得许可。
您可能还想考虑 档案馆, ,只是为了比较。它是 Apache 2.0 许可的。
我看到的Nexus使用的不断增长,而Artifcatory用法generaly持平。
/:
照片就是从这里 HTTP采取/blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/
还有矩阵对比 HTTP://文档.codehaus.org /显示/ MAVENUSER / Maven的+库+管理+功能+矩阵
双方Artifactory和Nexus或多或少类似的功能设置,但Artifactory的的LDAP支持使得它的Nexus上更具吸引力。虽然之间的关系也有LDAP支持,但在付费版本: - (
嗯......我与artifactory的经验是可怕的......但我是一个相对的新手,所以把它当作一粒盐。我总体的抱怨是,近期上传至artifactory的jar文件似乎并没有得到索引马上 - 在几个小时 - 而且似乎没有要强迫它的好方法。我已经试过这似乎好像他们应该有工作各种各样的事情,但没有。我一直在与m2eclipse的,添加依赖于我是从蚂蚁转换项目。当我尝试补充一点,我刚刚加入到artifactory的罐子,我希望它显示为中选择一个选择,但事实并非如此。
一个同事告诉我,他们已经安装了关系,到目前为止,他们喜欢它......但我不能保证它。我对尽快安装在Linux机器上,因为它可以找到我的。