`
houzhaowei
  • 浏览: 498101 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用仓库管理器——Sonatype Nexus的九大理由

阅读更多

目前有很多组织使用了一些工具依赖于Maven仓库,但他们并没有采用一个仓库管理器,对于这一点我十分惊讶。可能没人提出来这一点,没人站出来告诉别人使用一个仓库管理器能带来什么好处。我经常能从很多不使用Maven仓库管理器的组织那里听到这样的字眼:“我们不需要那么复杂……”,或者“中央仓库够了,我们不需要在本地建立这样一个仓库”

 

不用说,关于什么“是”一个好的Maven仓库,还存在很多误解。首先,安装它一点都不复杂。你只需要花几分钟就能下载并安装好Nexus ,而且我们已经特意的使得这一过程变得容易,并且尽可能减少侵入性。第二,一个缓存远程仓库的仓库管理器并不会缓存所有的东西。一个好的仓库管理器只会按需的缓存内容。这里是为那些排斥仓库管理器的人提供的九条理由。

 

九 - 加速构建

当你在Maven中运行多模块项目构建的时候,你认为Maven是怎么知道它是否需要更新插件或者snapshot依赖的呢?它需要为所有需要检验的构件向服务器提出一个请求。即使没什么变化,如果你的项目依赖于一些SNAPSHO或者你没有指定插件版本,Maven就必须对远程仓库提交数十至数百的请求。所有这些通过公共Internet的请求加起来会浪费很多时间。我看到过一个复杂的构建,在安装了本地Nexus之后,节省了75%的时间。不要再浪费编码时间去无畏的等待Maven对远程仓库的请求了。

 

八 - 节省你自己的带宽

组织越大,节省带宽就越重要。如果你有数千开发者不停的浪费带宽在下载同样的文件,那么使用一个仓库管理器可以保存一个本地的缓存,从而节省大量的带宽。即使一些小型的组织,对于网络连接和IT运行的预算也有限,也必须处理很多开发人员浪费带宽不停重复下载同样文件的问题。

 

七 - 节省中央Maven仓库的带宽

这可以说是一种公德心,利己利人。运行一个中央Maven仓库不容易。基于全球软件构件的需要,服务数百万的请求,数T的数据,一点都不便宜。简单的事情如每个组织安装一个本地仓库管理器可以大量降低对中央仓库的带宽需求(至少一半)。如果你有大于两个开发者在使用Maven,那么请为了中央仓库义务的安装一个仓库管理器。

 

六 - 可预见性和稳定性

过去一些年,你多久会遇到一次由于断网引起的业务彻底中断?让每天的工作依赖于中央仓库意味着你正依赖于因特网连接(事实上中央仓库是24/7可用的)。虽然我们有信心保持中央仓库24/7运行,但你还是应该花一点时间建立你自己的仓库,以确保你的开发团队不会由于任意一方的网络中断而惊讶。如果你有本地的仓库管理器,如Nexus,你可以确保即使你失去了网络连接你还能工作。

 

五 - 控制和审计

当然,你已经转移到了Maven(或者Ivy,Ivy读取同样的仓库),而且你有一房间的开发人员,他们被授权添加或者删除依赖,以及试验新的框架。我们都清楚。开发人员可能都对试验新框架更感兴趣,而不是正常工作。但不幸的是,很多时间,一个架构师,或者一个架构小组需要建立组织使用的基线标准。Nexus提供这一层次的控制。

 

如果你需要对那些组织中使用的构件进行更多的监管,看一下Nexus。没有仓库管理器,对于那些你开发团队会使用的依赖你只有很少的控制。

 

四 - 能够部署第三方构件

你希望能够基于开源数据库工作,如MySQL或者Postgres,但是你组织有不同的需求,和Oracle有一个长期的支持合同。因此,你有一系列JAR文件不能够从公共Maven仓库获得。你需要将这些构件部署到仓库中,然后配置Maven去读取该仓库。

 

你不用为此手工编写一些POM,只要下载Nexus,然后花两三分钟时间使用这个免费,功能强大的工具来创建一个仓库,部署第三方构件。Nexus提供了直观的上传界面,你可以使用它上传任意JAR文件,然后在你项目依赖中引用它。

 

三 - 可以建立本地内部仓库

非常好,你正使用Maven,每个人都从头开始根据代码执行快速的构建。整个一年,这都工作得很好,但是当系统变得庞杂,程序员开始抱怨构建花了太多时间。你可以通过分割项目解决这个问题,然后使用Nexus作为一个内部仓库来存储内部的依赖。

 

例如,有一个公司有30个开发者,被分成三个10人的小组,每个小组关注于系统的不同部分。如果不能够很方便的实现内部依赖共享,类似的小组就不得不创建一个基于文件系统的仓库,或者将系统整个的构建,那样依赖就能被安装到每个开发者的本地仓库。

 

另一种选择是将项目分隔成不同的模块,每个模块都依赖于存储在Nexus仓库中的构件。这么做之后,小组之间可以通过基于Nexus交换已编译的snapshot和release构件来协作。换句话说,你不需要让没个开发者签出巨大的包含整个组织代码的多模块项目。组织中的每个小组可以发布snapshot构件至本地Nexus,从而每个小组可以维护一个只包含它负责代码的项目结构。

 

在宏观层次,公共Maven仓库及建立项目定义的严格制度,可以充当开源世界中跨项目协作的基础。(这听起来是不是很重要,很“令人敬畏”?)

 

二 - 可以建立公共仓库

如果是一个开源项目,或者你将软件发布到公共环境,Nexus可以是一个你用来为外部用户提供构件服务的工具。这么想……上你发布项目的一个版本是什么时候?假设它没被发布到Maven仓库中,你很可能需要编写一些脚本来打包此次发布的内容,可能某些特定的人需要使用一个超级权限的密钥来为该发布签名。然后,你必须将其上传到一些web服务器上,然后确保相应的页面被更新,正确描述了此次发布。这里有很多不必要的复杂度。

 

如果你正使用Nexus,它可以被配置成一个暴露在公共世界的宿主仓库,你就可以使用Maven的打包和装配能力,以及Maven仓库的结构,来使得一次发布变得非常的简单。而且,这不仅仅正对于JAR文件和Java web应用;Maven仓库可以存储任何种类的构件(事实上,我正考虑使用Maven仓库结构来发布用户文档和视频内容)。Nexus,及Maven仓库,总得来说为发布定义了大家都知道的结构。如果你正编写一些Java类库,将其发布到你自己的Nexus实例中,然后提供公共仓库服务,就可以让人们更容易的马上开始使用的的代码。

 

一 - 这相当简单

类似的事情我经常听到。有一个早晨的Scrum会议,或者项目状态的周会。一些低层的程序员怯懦的举起他的手说,“我们可以安装一个如Nexus的仓库软件么?我认为它能帮助我们显著的加速很多工作。”一直被时间的预算压着的开发经理,听到单词“安装”和“软件”,就马上否决了这件事情,理由是他们没有时间做这种基础工作,因为这不是“需求驱动”的。(我看到过这种事情发生。)

 

这个经理不知道的是,在一个共享的机器上安装Nexus,然后配置随后的系统服务可能是需要花不到十分钟的时间。事实上,你可以在免费的Maven书上读到安装说明。安装Nexus十分的简单。我已经有了一些实践,但是我认为任何一个知道如何操作web浏览器的人都可以在几分钟内完成这项工作。

 

转自:http://juvenshun.iteye.com/blog/285059

分享到:
评论

相关推荐

    Maven本地仓库搭建工具nexus-2.11.4-01-bundle

    Nexus是由Sonatype公司开发的一款强大的Maven仓库管理器,它不仅能够作为本地仓库,还可以作为代理仓库,甚至可以用来托管自定义的库。Nexus提供了一个图形用户界面,方便管理和维护各种仓库。 ** Nexus 2.11.4-01 ...

    nexus-3.17.0-01-win64.zip

    Nexus是Sonatype公司开发的一款强大的仓库管理器,主要用于Maven、Gradle等构建工具的依赖管理和部署。这个“nexus-3.17.0-01-win64.zip”文件是Nexus 3.17.0的Windows 64位版本安装包,包含了运行Nexus所需的所有...

    nexus-3.32.0.zip

    Nexus是Sonatype公司开发的一款开源的Maven仓库管理器,它被广泛应用于Java开发领域,尤其是对于Maven、Gradle等构建工具的项目管理。Nexus作为一个私有(或称为“私服”)仓库,可以帮助开发者集中管理和分发软件...

    nexus-2.14.17-01-bundle.zip

    Nexus是Sonatype公司开发的一款强大的仓库管理器,主要用于Maven、Gradle等构建工具的依赖管理和部署。在本文中,我们将深入探讨Nexus 2.x的最后一个版本——"nexus-2.14.17-01-bundle.zip",以及如何在国内环境下...

    nexus-2.7.0-bundle-maven仓库搭建.rar

    【标题】"nexus-2.7.0-bundle-maven仓库搭建.rar" 提供的是一个用于构建Maven仓库的工具包,Nexus是Sonatype公司出品的一款强大的 Maven 库管理器,它允许开发者集中管理和分发Java组件,包括JARs、源代码、文档、...

    nexus-3.23.0-03-unix.rar

    《Nexus作为Maven仓库管理器在Linux环境下的部署与使用》 在软件开发领域,Maven已经成为Java项目构建和依赖管理的标准工具。然而,随着项目的复杂性和团队规模的增加,仅靠本地仓库来管理依赖可能变得力不从心。...

    nexus-2.14.3-02-bundle.tar.gz

    Nexus 是一个由 Sonatype 公司开发的企业级 Maven 仓库管理器,它允许用户集中管理和分发软件组件,如 JAR 文件、NPM 包或 Docker 映像。Nexus 不仅可以作为代理服务器缓存远程仓库的内容,还可以作为一个私有的、...

    nexus-2.14.19-01-bundle.tar

    标题中的“nexus-2.14.19-01-bundle.tar”指的是Sonatype Nexus,这是一个开源的仓库管理器,广泛应用于Java开发领域,尤其是与Maven、Gradle等构建工具配合使用。Nexus提供了对软件组件(如JARs、WARs、NPM包、...

    nexus-3.13.0-01-win64.7z

    Nexus Repository Manager是Sonatype公司推出的一款强大的仓库管理器,它支持Maven、npm、NuGet等多种格式的软件包管理。Nexus 3.13.0-01-win64版本是专为Windows系统设计的,包含了所有必要的组件和服务,使得在...

    nexus-3.19.1-02.tar.gz

    标题 "nexus-3.19.1-02.tar.gz" 指的是 Sonatype Nexus Repository Manager 的一个特定版本,这是一个开源的软件仓库管理工具,广泛用于管理和分发Maven、npm、RubyGem等不同类型的软件包。该版本是3.19.1的第二个...

    nexus-2-bundle.zip

    在标签中,"nexus"和"maven"是关键词,强调了Nexus作为Maven仓库管理器的角色。Nexus与Maven的集成使得开发者可以通过私有仓库快速获取和部署Maven项目依赖,同时也能方便地发布自己的构建到仓库中供团队成员使用。 ...

    nexus-3.30.0-01.7z

    Nexus是一款强大的仓库管理器,由Sonatype公司开发,广泛应用于Maven、Gradle等Java构建工具中,用于存储、管理和分发各种软件组件,如JAR文件、npm包、Python wheels等。 在描述中提到的“nexus,linux,win,mac...

    nexus-3.23.0-03-unix.tar.zip

    Nexus,由Sonatype公司开发,是一款广泛应用于软件开发领域的中央仓库管理工具,它集成了Maven、Gradle等构建工具的仓库管理功能,提供对二进制组件的高效存储、检索和版本控制。在此次讨论的版本——"nexus-3.23.0-...

    nexus-2.1.1-bundle.zip

    Nexus是Sonatype公司开发的一款开源的软件仓库管理工具,广泛用于Maven、Gradle等构建工具的依赖管理和部署。这个zip文件可能包含了Nexus服务器的完整安装包,包括所有必要的组件和配置文件。 描述中的 "nexus-...

    nexus-3.23.0unix.rar

    Nexus作为一款优秀的Maven仓库管理器,提供了这样的解决方案。本文将详细讲解如何在Unix系统上安装并配置Nexus 3.23.0版本,创建并管理公司的Maven私有仓库。 首先,我们来了解下Nexus的核心功能。Nexus不仅可以...

    nexus unix package

    Nexus是Sonatype公司开发的一款强大的仓库管理器,主要用于Maven、npm、Gradle等构建工具的依赖管理和分发。Nexus不仅仅是一个简单的存储库,它还提供了高级功能,如代理仓库、虚拟仓库、存储库组、 artifact版本...

    nexus构建maven仓库总结(完善版3),添加了对第三方插件的处理和应用

    这时,Nexus作为一个强大的仓库管理器,能为企业搭建私有的Maven仓库,提供更高效、安全的依赖管理。本文将深入探讨Nexus在构建Maven仓库中的应用,特别是针对第三方插件的处理。 【描述】:“本总结详细介绍了如何...

    nexus-2.12.0-01-bundle(已验证可用).zip

    Nexus2作为一个开源的仓库管理工具,能够托管各种类型的艺术品,如JAR、WAR、POM等,同时它也支持代理远程仓库,如Central Maven Repository,以减少网络延迟。 描述中提到,该压缩包是跨平台的,支持Windows和...

    Nexus搭建Maven私服指导手册

    Nexus是一个由Sonatype开发的强大仓库管理系统,它不仅简化了内部仓库的维护工作,还优化了对外部仓库的访问方式。Nexus的主要特点包括: - **一站式管理**:在一个界面内全面控制仓库中的每一个Artifact。 - **...

    nexus2.6.2+hudson3.0.1持续集成工具(1)

    Nexus是由Sonatype公司开发的一款强大的Maven仓库管理器。它不仅是一个存储库,还可以作为一个代理服务器,缓存远程仓库的依赖,从而提高构建速度。Nexus 2.6.2-01可能包含了对Maven、Gradle等构建工具的支持,以及...

Global site tag (gtag.js) - Google Analytics