我们正在使用 Maven 进行大型构建过程(> 100 个模块)。我们一直在源代码管理中存储我们的外部依赖项,并使用它来更新本地存储库。
但是,我们已经准备好升级到可以缓存中央的本地存储库,这样我们就不必主动下载所有第 3 方(但我们仍然可以从本地存储库中提取)。此外,我们希望通过每晚构建发布我们的内部构建工件,以便开发人员不必构建世界。
我们正在考虑 Nexus 和 Artifactory。偏爱其中一个的原因是什么?还有其他我们应该考虑的吗?
我们正在使用 Maven 进行大型构建过程(> 100 个模块)。我们一直在源代码管理中存储我们的外部依赖项,并使用它来更新本地存储库。
但是,我们已经准备好升级到可以缓存中央的本地存储库,这样我们就不必主动下载所有第 3 方(但我们仍然可以从本地存储库中提取)。此外,我们希望通过每晚构建发布我们的内部构建工件,以便开发人员不必构建世界。
我们正在考虑 Nexus 和 Artifactory。偏爱其中一个的原因是什么?还有其他我们应该考虑的吗?
我敢肯定,如果您只谈论从“ mvn deploy
”存储二进制文件,两者都可以。
我们非常广泛地使用 Artifactory,并在此过程中进行所有升级。许多项目,部署的大量快照和代理的外部存储库。没有一个问题。我发现很难解释其他人如何遇到其数据库、索引或其他任何问题。类似的事情从未发生在我们身上。此外,Artifactory 允许将数据存储在磁盘上,并且只使用数据库来存储元数据,它非常灵活(请参阅此处的更多内容)。
使这些应用程序非常不同的是它们与其他构建工具和技术集成的方法。Nexus 和 Sonatype 几乎都锁定在 Maven 和 m2eclipse 上。他们忽略了其他任何事情,直到最近才开始致力于他们自己的专有 Hudson 集成(请参阅他们的Maven 3 网络研讨会)。
编辑:自 2017 年起,这不再是真的 Nexus为其他构建工具提供了更大的支持 编辑结束
Artifactory 提供了很棒的Hudson、TeamCity 和 Bamboo 集成,以及Gradle / Ivy支持。因此,当您走出 Sonatype“舒适区”(Maven、m2eclipse)时,尽管 Nexus 没有给您任何帮助,但 Artifactory 拥抱并与所有主要的构建工具协作。
事实上,能够在工作完成后从 Hudson 部署构建工件,而不是通过 " " 部署是一个巨大的区别:Artifactory Hudson 插件会立即mvn deploy
对所有工件进行原子式部署,只有在构建作业成功完成时。" " 在每个模块之后运行,如果构建作业在中间失败,则可以部署部分工件集。在模块完成时从 Maven 部署,而不是在作业完成时从构建服务器进行部署,这确实是一件坏事。mvn deploy
如您所见,Artifactory 认为“框外”而 Nexus 认为“框内”并且只关心 Maven 和 Maven 工件。
使 Artifactory 更易于访问的其他因素是他们基于云的 Artifactory Online 解决方案。每月大约 80 美元,您就拥有了自己的 Artifactory 实例,无需为它专门配置任何服务器。
Artifactory 有一个简单直接的 REST API,不知道它在 Nexus 上是如何工作的。 Edit Nexus还有一个 REST API,您也可以轻松使用。
总而言之,对于 Maven 工件的基本存储,我认为两者都很好。但是,虽然 Nexus 不再是严格意义上的“Maven 存储库管理器”,但 Artifactory 仍在继续,它是来自任何构建工具和 CI 服务器的任何类型二进制文件的通用“二进制存储”。
我不了解 Artifactory,但以下是我使用 Nexus 的原因:
Artifactory 支持文件系统和数据库存储后端。存储是基于校验和的,相同的二进制文件只存储一次,无论它们在 repo 中出现多少次,这使得 Artifactory 的存储效率更高。由于这种架构,移动和复制也非常便宜(在 Nexus 中,移动/复制没有 REST - 您必须在文件系统上移动内容,然后在存储库上运行纠正措施以使其知道内容已更改)。
另一个重要的区别是 Artifactory 与 Hudson 和 TeamCity 具有独特的集成,用于捕获有关已部署的工件、已解决的依赖项和与构建运行相关的环境数据的信息,从而提供完整的构建可追溯性。
Artifactory 将工件存储在数据库中,这意味着如果出现问题,您的所有工件都会消失。Nexus 为您的珍贵文物使用平面文件,因此您不必担心它们都会丢失。
如果您需要其中任何一个的“Pro”功能(例如 Staging repos、工件促销、NuGet),那么您需要考虑不同的定价模型,这些定价模型显示在他们的网站上。
总之:
无论您有多少用户,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 它的最新版本是一个真正的跳跃你可以增量备份你的存储库,这意味着你可以保存和维护所有的工件它有一个易于使用的 web ui 并且非常容易设置我非常喜欢它检查推出新版本 2.0
从学习者的角度来看,我注意到两者之间的一些具体差异。
撇开所有政治/宗教不谈,许可对某些组织产生了影响。
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-growth/
还有矩阵比较http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix
Artifactory 和 Nexus 都有或多或少相似的功能集,但 Artifactory 的 LDAP 支持使其比 Nexus 更具吸引力。虽然 Nexus 也有 LDAP 支持,但在付费版本中 :-(
嗯……我在人工制品方面的经验很糟糕……但我是一个相对新手,所以对它持保留态度。我的总体抱怨是最近上传到 Artifactory 的 jar 文件似乎没有立即被索引 - 就像几个小时一样 - 似乎没有一个好的方法来强制它。我尝试了各种看起来好像它们应该起作用的东西,但没有。我一直在使用 m2eclipse,将依赖项添加到我从 ant 转换的项目中。当我尝试添加一个刚刚添加到工件的 jar 时,我希望它在选择器中显示为一个选项,但它没有。
一位同事告诉我,他们已经安装了 nexus,到目前为止他们喜欢它……但我还不能保证。只要 IT 能找到我,我就会将它安装在 Linux 机器上。