使用本地工件更新Nexus存储库

时间:2010-11-22 08:09:21

标签: deployment maven nexus

我最近将一些maven工件直接下载到我的本地存储库(.m2 / repository)。 现在我安装了Nexus Repository Manager,需要填充其存储空间,而无需再次下载所有工件。有没有办法用本地存储库更新Nexus存储库。 我不想简单地复制它们,因为Nexus将有关其公共服务器(中央服务器,代码库等)的文件与本地存储库结构分开,而

更新: 同时我将工件从本地存储库复制到Nexus存储(公共存储库)。我可以通过Nexus webapp浏览工件,但是Maven无法解决Nexus的工件问题。 我需要特别注册吗?我重新编制了公共存储库的索引并多次重启Nexus - 没有任何更改。

1 个答案:

答案 0 :(得分:13)

Nexus有几种类型的存储库:托管存储库(真正存储maven工件的存储库),代理存储库(在请求工件时将流量重定向到其他远程存储库),虚拟存储库(仅仅是maven1存储库的适配器[超出了本问题的范围])。您还可以创建存储库组,它可以从任何聚合中提供工件(public存储库就是其中之一)。

此外,nexus根据其发布政策将其存储库划分为快照版本。前者仅存储快照工件;理论上,后者可以存储快照和版本,但当repo非常大并且包含快照时,它实际上会出现错误。

为了托管您的工件,您需要:

首先:将本地存储库划分为两个:一个包含快照,另一个包含版本。如果您的回购非常大,Nexus存储库转换工具将帮助您:

    <dependency>
        <groupId>org.sonatype.nexus.tools</groupId>
        <artifactId>nexus-repository-conversion-tool</artifactId> 
        <version>1.8.0.1</version>
        <classifier>cli</classifier> 
    </dependency>

下载后,您可以执行java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget,其中Source是包含本地存储库以移动到nexus的目录,而Target是一个现有的,空的可写目录,其中转换工具将离开拆分的存储库。如果源目录为repository且目标为temp,则会创建temp/repository-snapshotstemp/repository-releases目录。

第二:将您的拆分回购移动到nexus。并将它们保留在${NEXUS_HOME}/sonatype-work/nexus/storage中,或者将nexus安装配置为存储存储库的任何位置。

第三:创建两个托管存储库,其ID与您在第二步中移动的存储库的ID相同。 (在示例repository-snapshotsrepository-releases

如果您的仓库只包含版本,那么您的解决方案可能会有效,但您会犯下另一个错误。虽然nexus为每个存储库存储工件,但是非托管存储库的存储仅用于缓存目的(如public存储库的情况),您必须将内容复制到托管的存储库中。为了工作。

相关问题