我们应该使用 Nexus 或艺术品的 Maven 回购?

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

然而,我们已经准备好毕业到一个本地回购,可以缓存中央,这样我们就不必主动下载所有第三方(但我们仍然可以有一个本地回购拉)。此外,我们希望通过夜间构建发布内部构建工件,这样开发人员就不必构建整个世界。

我们正在考虑 Nexus 和 ArtiFactory。为什么偏爱其中一个而不是另一个?还有其他我们应该考虑的吗?

101522 次浏览

我不知道 ArtiFactory 是什么,但是下面是我使用 Nexus 的原因:

  • 非常简单的安装(从1.2开始,也非常简单的升级)
  • 非常好的网页用户界面
  • 易于维护,几乎没有管理开销
  • Provides you with RSS feeds of recently installed, broken artifacts and errors
  • It can group several repositories so you can mirror several sources but need only one or two entries in your settings.xml
  • 从 Maven 部署可以开箱即用(不需要 WebDAV 代码等)。
  • 是免费的
  • 您可以重定向访问路径(例如,一些破碎的 pom.xml 需要“ xxx”中的“ a.b.c”)。您可以修复 Nexus 中的 bug,并将请求重定向到工件真正所在的位置,而不是修补 POM。

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

你应该用艺术品 它的最新版本是一个真正的跳跃 您可以增量备份存储库,这意味着您可以保存和维护所有的构件 它有一个易于使用的网络用户界面。 and is really easy to set up 我很享受 看看它的新版本2.0

撇开政治/宗教不谈,许可证对一些组织来说是有影响的。

Nexus 是 GPL现在是 AGPLv3现在是 Eclipse公共许可证

人造是 阿帕奇执照 LGPLv3许可的2.1版本的产品。

为了便于比较,您可能还需要考虑 档案馆,它是 Apache 2.0许可的。

ArtiFactory 和 Nexus 都有或多或少相似的特性集,但 ArtiFactory 的 LDAP 支持使其比 Nexus 更具吸引力。虽然 Nexus 也支持 LDAP,但是是付费版本:-(

我最近做了一些关于 ArtiFactory 2和 Nexus 1.3的研究,我将在这里列出我发现的主要区别:

  • ArtiFactory 在 DB 中存储元数据和可选的文件,Nexus 直接写入文件系统。还是有优点的。和缺点。每次接近。DB 支持事务,而在 FS 中存储的文件可以直接访问。
  • 人工对系统要求较高,特别是对磁盘空间的要求更高。

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

ArtiFactory 支持 都有文件系统和数据库存储后端。存储是基于校验和的,相同的二进制文件只存储一次,不管它们在回购中出现多少次,这使得 ArtiFactory 的存储效率更高。由于这种架构,移动和复制也非常便宜(在 Nexus 中没有用于移动/复制的 REST ——你必须在文件系统中移动内容,然后对回购执行纠正操作,让它知道内容已经改变)。

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

嗯... 我的人工制品经验是可怕的... 但我是一个相对的新手,所以采取一粒盐。我的总体抱怨是,最近上传到 ArtiFactory 的 jar 文件似乎不会马上被索引——比如在几个小时内——而且似乎没有一个好的方法来强制它。我尝试了各种看似应该有效的方法,但都没有成功。我一直在使用 m2eclipse,添加依赖项到一个项目,我正在从蚂蚁转换。当我试图添加一个罐子,我刚刚添加到艺术,我希望它显示为一个选择器中的选择,但它没有。

一个同事告诉我,他们已经安装了连接器,到目前为止,他们喜欢它... 但我还不能保证它。只要 IT 部门能帮我找到一个,我就会把它安装到 Linux 机器上。

我确信,如果您只讨论从“ mvn deploy”存储二进制文件,那么两者都可以做得很好。

我们在所有的升级过程中都非常广泛地使用 ArtiFactory。许多项目,许多快照部署和外部回购代理。一点问题都没有。我发现很难解释其他人是如何在数据库、索引或其他方面遇到问题的。我们从没遇到过这种事。此外,ArtiFactory 允许在磁盘上存储数据,并且只使用数据库来存储元数据,这是非常灵活的(在这里看到更多)。

使这些应用程序 非常与众不同的是它们与其他构建工具和技术集成的方法。Nexus 和 Sonatype 几乎锁定了 Maven 和 m2eclipse。他们忽略了其他任何东西,直到最近才开始在自己的专有 Hudson 集成上工作(参见他们的 Maven 3在线研讨会)。 编辑: 这不再是真实的,因为2017年 Nexus 给 对其他构建工具的更大支持 < strong > End of EDIT

艺术工厂提供了一个令人敬畏的 Hudson,TeamCity 和竹子集成,和 格拉德尔/Ivy支持。因此,当你走出 Sonatype 的“舒适区”(Maven,m2eclipse)时,虽然 Nexus 不会给你带来任何东西,但 ArtiFactory 拥抱并协作所有主要的构建工具。

事实上,能够在作业完成时从 Hudson 部署构建构件,而不是通过“ mvn deploy”部署构建构件是一个巨大的区别: ArtiFactory Hudson 插件只有在构建作业成功完成时,才能像原子一样部署所有构件 马上。“ mvn deploy”在每个模块之后运行,如果构建作业在中间失败,则可以部署部分构件集。在模块完成时从 Maven 部署而不是在作业完成时从构建服务器部署确实是一件坏事。

正如你所看到的,ArtiFactory 认为“在盒子之外”,而 Nexus 认为“在盒子之内”,只关心 Maven 和 Maven 工件。

另一个让艺术品更容易接近的东西是他们的 基于云的人工在线解决方案。大约80美元一个月,你有自己的 ArtiFactory 实例,没有必要为它专用任何服务器。

伪造有一个 简单明了的 REST API,不知道它是如何为 Nexus 工作的。 编辑 Nexushas also a REST API,你也可以很容易地使用它。

总之,对于 Maven 工件的基本存储,我认为两者都可以

If you need the "Pro" features of either (e.g. Staging repos, artifact promotion, NuGet), , then you need to consider the different pricing models, which are displayed on their websites.

总之:

  • 伪造专业
    • 你付 每个服务器
    • 你可以为增加的服务时间付更多的钱
  • Nexus Pro
    • you pay 每个座位, i.e. how many developers downloading artifacts
    • 支持服务是星期一至星期五0800-2000 ET 只,不管你支付什么

不管你有多少用户,Nexus Pro 提供的支持服务大致相当于 ArtiFactory 每年7,450美元的“银色价值套装”。

每年7,450美元可以买到大约67个 Nexus Pro 座位(1-50@108,其余@120)。

在价格和支持方面,NexusPro 是有意义的,直到你有67个用户,这时 ArtiFactory 成为更便宜的选择。

If you're doing all the support in-house; however, that magic point is about 23 users (Artifactory's most basic support offering is $2,750/year).

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

  1. War 部署目前在 Jboss 应用服务器上不受支持,尽管它在 Tomcat 下运行。
  2. Sonatype does not offer me an Amazon Machine Image (AMI), at present, that I could quickly stand up and test.
  3. Bitnami 提供了一个 ArtiFactory AMI,站起来只需要几分钟,配置需要几分钟,可能需要几十分钟,这取决于您想要实现什么。
  4. ArtiFactory 在云中提供了 ArtiFactory 的 SaaS 版本,因此您可以专注于完成任务,而不是基础设施。
  5. 我没有使用 Nexus 的经验,但我发现 ArtiFactory 非常直观,而且很容易配置,至少最初是这样。
  6. 添加-我确实注意到,艺术品用户指南,这可能是一个经验丰富的专业人士,是一个有点轻的一些深入的解释。例如,RedHat 的 Jboss EAP Enterprise Repo 说,一开始,先解压缩,然后添加一个 Repository。一切都很好,但是当我试图查看被导入的工件时,工件报告为零?没有错误或警告,所以我现在正在寻找一个解释。这正常还是不正常?文档中的一个简单解释可以很快地指出正确的方向。作为一个优秀的贡献者,我将这些评论添加到项目中,以便让其他初学者受益。

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

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