我们正在使用Maven进行大型构建过程(> 100个模块)。我们一直将外部依赖项存储在源代码管理中,并使用它来更新本地存储库。
但是,我们已经准备好毕业于可以缓存中央文件的本地存储库,这样我们就不必主动下载所有第3方(但我们仍然可以从中提取本地存储库)。另外,我们希望从每晚的构建中发布内部构建工件,以便开发人员不必构建世界。
我们正在考虑Nexus和Artifactory。是什么原因导致一个人偏爱另一个人?还有其他我们应该考虑的吗?
我们正在使用Maven进行大型构建过程(> 100个模块)。我们一直将外部依赖项存储在源代码管理中,并使用它来更新本地存储库。
但是,我们已经准备好毕业于可以缓存中央文件的本地存储库,这样我们就不必主动下载所有第3方(但我们仍然可以从中提取本地存储库)。另外,我们希望从每晚的构建中发布内部构建工件,以便开发人员不必构建世界。
我们正在考虑Nexus和Artifactory。是什么原因导致一个人偏爱另一个人?还有其他我们应该考虑的吗?
Answers:
我不了解Artifactory,但这是我使用Nexus的原因:
我敢肯定,如果您只谈论存储来自“ mvn deploy
”的二进制文件,那么两者都可以。
我们在整个升级过程中都非常广泛地使用Artifactory。很多项目,部署了许多快照,并代理了外部存储库。不是一个问题。我发现很难解释其他人如何遇到其数据库,索引或其他问题。像这样的事情在我们身上从未发生过。此外,Artifactory允许将数据存储在磁盘上,并且仅使用DB来存储元数据,这非常灵活(请参阅此处的更多内容)。
是什么让这些应用程序非常不同的是,他们对其他的构建工具和技术的集成方法。Nexus和Sonatype几乎锁定在Maven和m2eclipse上。他们忽略了其他任何东西,直到最近才开始进行自己专有的Hudson集成(请参阅其Maven 3网络研讨会)。
编辑:这不是真的了,因为2017年的Nexus给出了其他的构建工具一个更大的支持 编辑完的
Artifactory提供了很棒的Hudson,TeamCity和Bamboo集成以及Gradle / Ivy支持。因此,一旦您走出Sonatype“舒适区”(Maven,m2eclipse),Nexus便无法为您提供任何帮助,而Artifactory则与所有主要的构建工具融为一体。
实际上,能够在作业完成时从Hudson部署构建工件,而不是通过“ mvn deploy
”进行部署,这是一个巨大的区别:Artifactory Hudson插件仅在构建作业成功完成后立即对所有工件进行原子式部署。“ mvn deploy
”会在每个模块之后运行,如果构建作业在中间失败,则可以部署部分工件。在模块完成时从Maven进行部署,而不在作业完成时从构建服务器进行部署,这确实是一件坏事。
如您所见,Artifactory认为“盒子外面”,而Nexus认为“盒子外面”,并且只关心Maven和Maven工件。
他们基于云的Artifactory Online解决方案使Artifactory更易于访问。每月花费约80美元,您就可以拥有自己的Artifactory实例,而无需为此专门指定任何服务器。
Artifactory具有简单明了的REST API,不知道它如何在Nexus上工作。 Edit Nexus 还具有一个REST API,您也可以轻松使用它。
总而言之,对于Maven工件的基本存储,我认为两者都很好。但是,尽管Nexus停止了严格的“ Maven存储库管理器”,但Artifactory仍在继续,它是来自任何构建工具和CI服务器的通用二进制存储“二进制存储”。
Artifactory的支持这两个文件系统和数据库存储后端。存储是基于校验和的,并且相同的二进制文件仅存储一次,无论它们在存储库中出现多少次,这使得Artifactory的存储方式更加高效。由于这种架构,移动和复制也非常便宜(在Nexus中,没有用于移动/复制的REST-您必须在文件系统上移动内容,然后在存储库上执行纠正措施以使其知道内容已更改)。
另一个重要的区别是Artifactory与Hudson和TeamCity进行了独特的集成,以捕获有关与部署运行相关的已部署工件,已解决的依赖性和环境数据的信息,从而提供了完整的构建可追溯性。
Artifactory将工件存储在数据库中,这意味着如果出现问题,所有工件都将消失。Nexus为您的珍贵文物使用了一个平面文件,因此您不必担心它们会全部丢失。
如果您需要其中一个的“ Pro”功能(例如,分段存储,工件升级,NuGet),则需要考虑在其网站上显示的不同定价模型。
综上所述:
无论您有多少用户,Nexus Pro都将提供与Artifactory每年7,450美元的“ Silver Value Pack”(银价套装)大致相同的支持服务。
$ 7,450 /年将为您购买大约67个Nexus Pro席位(1-50 @ $ 108,其余@ 120)。
仅在价格和支持方面,Nexus Pro才有意义,直到您吸引到67个用户为止,届时Artifactory将成为更便宜的选择。
如果您在内部进行所有支持;但是,这个魔点大约是23个用户(Artifactory最基本的支持产品是每年2750美元)。
我刚刚对Artifactory 2和Nexus 1.3进行了一些研究。我将在这里列出我发现的主要区别:
您应该使用Artifactory。它的最新版本是一次真正的跳跃。您可以增量备份存储库,这意味着您可以保存和维护所有工件,它具有易于使用的Web ui,并且设置起来也很容易,我非常喜欢推出新版本2.0
从学习者的角度来看,我注意到两者之间的某些特定差异。
除了所有的政治/宗教,许可对于某些组织来说也有所不同。
Nexus 现在是GPL,现在是AGPLv3,现在是Eclipse Public License(EPL)。
从产品版本2.1开始,Artifactory是Apache许可的 LGPLv3。
出于比较的考虑,您可能还需要考虑Archiva。它是Apache 2.0许可的。
我看到Nexus的使用量正在增长,而人工工具的使用量通常保持稳定。
图片是从这里http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/
也有矩阵比较http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix
嗯...我对人工制品的经验太糟糕了...但是我是一个相对较新手,所以请带一点盐。我的整体抱怨是,最近上传到Artifactory的jar文件似乎没有立即被索引-长达数小时之久-而且似乎没有强制这种方法的好方法。我已经尝试了各种似乎可以进行的操作,但没有成功。我一直在使用m2eclipse,将依赖项添加到我从ant转换的项目中。当我尝试添加刚添加到工件中的jar时,我希望它会在选择器中显示为选择项,但不会显示。
一位同事告诉我,他们已经安装了联系,到目前为止,他们喜欢它...但是我还不能保证。一旦IT可以找到我,我就要在Linux机器上安装它。