然而,我们准备升级到一个本地仓库,可以缓存中央仓库,这样我们就不必主动下载所有第三方插件了(但是我们仍然可以从本地仓库拉取)。此外,我们还想从每晚的构建中发布我们的内部构建产物,以便开发人员不必创建整个项目。
我们正在考虑 Nexus 和 Artifactory。有什么理由更喜欢其中一个?还有其他我们应该考虑的吗?
mvn deploy
”存储二进制文件,两者都可以很好地完成。mvn deploy
”,这是一个巨大的区别:Artifactory Hudson插件会一次性地部署所有工件,仅在构建作业成功完成时。如果构建作业在中途失败,则“mvn deploy
”会在每个模块之后运行,并且可能只部署部分工件集。从Maven在模块完成时进行部署,而不是从构建服务器在作业完成时进行部署,真的是一件糟糕的事情。Artifactory拥有一个简单易懂的REST API,不确定Nexus的API如何工作。 编辑Nexus 也具有REST API,同样也很容易使用。
总之,对于Maven构件的基本存储,我认为两者都可以。 但是,虽然Nexus只是严格的“Maven仓库管理器”,Artifactory则继续发展,成为任何构建工具和CI服务器的通用“二进制存储”。
我不知道Artifactory,但以下是我使用Nexus的原因:
Artifactory支持文件系统和数据库存储后端,存储是基于校验和的,相同的二进制文件只会存储一次,无论它们在存储库中出现多少次,这使得Artifactory在存储方面更加高效。由于这种架构,移动和复制也非常便宜(在Nexus中,没有用于移动/复制的REST API - 您必须在文件系统上移动内容,然后对存储库运行纠正操作以让其知道内容已更改)。
另一个重要的区别是Artifactory与Hudson和TeamCity具有独特的集成功能,可以捕获与构建运行相关的部署工件、解决的依赖项和环境数据的信息,从而提供完整的构建可追溯性。
Artifactory将构件存储在数据库中,这意味着如果出现问题,所有的构件都会丢失。Nexus使用平面文件来存储您珍贵的构件,因此您不必担心它们全部丢失。
总结:
无论你有多少用户,Nexus Pro都提供了与Artifactory的每年7450美元的“Silver Value Pack”基本相当的支持服务。
每年7450美元大约可以购买67个Nexus Pro座位(1-50个座位108美元,其余座位120美元)。
仅从价格和支持方面而言,直到达到67个用户,Nexus Pro才是更合理的选择。此时Artifactory成为更便宜的选项。
然而,如果你所有的支持工作都在内部进行,那么这个魔法点大约是23个用户(Artifactory的最基本的支持方案是每年2750美元)。
我最近做了一些关于Artifactory 2和Nexus 1.3的研究。下面是我发现的主要区别:
你应该使用Artifactory 它的最新版本是一个真正的飞跃 你可以增量备份你的仓库,这意味着你可以保存所有的构件并保持更新 它有一个易于使用的web界面 而且非常容易设置 我非常喜欢它 看看它的新版本2.0
图片来自于这里 http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/
还有一个矩阵比较表格 http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix