的Nexus具有若干类型存储库:托管库(那些确实存储行家伪影),代理库(当请求一个工件,流量重定向到其它远程仓库),虚拟库(仅仅maven1仓库的适配器[超出了这个问题的范围])。您还可以创建存储库组,这些存储组可以提供来自其任何集合的工件(public
存储库就是其中之一)。
此外,承上启下根据其出版政策为快照和发布划分他们的仓库。前者仅存储快照文物;而后者在理论上可以存储快照和发布,但是当回购非常大并且包含快照时,它实际上表现出错误。
为了举办的文物,你需要:
第一:将你的本地仓库分为两个:一个包含快照,另一个包含版本。的Nexus仓库皈依工具将帮助你,如果你的回购是非常大的:
<dependency>
<groupId>org.sonatype.nexus.tools</groupId>
<artifactId>nexus-repository-conversion-tool</artifactId>
<version>1.8.0.1</version>
<classifier>cli</classifier>
</dependency>
一旦downlaoded你可以执行java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget
其中Source
是包含本地存储库移动到承上启下的目录,并Target
是一个现有的空以及转换工具将离开拆分存储库的可写目录。假设源目录是repository
并且目标是temp
,它将创建temp/repository-snapshots
和temp/repository-releases
目录。
第二个:将您拆分的回购移动到联系。并将它们留在${NEXUS_HOME}/sonatype-work/nexus/storage
中,或将您的连接安装配置为存储存储库的位置。
三:创建两个托管库用相同的ID,你在第二步中移动的回购协议。 (在示例repository-snapshots
和repository-releases
)
如果您的回购将只包含版本,您的解决方案可能已经工作,但您会犯另一个错误。尽管nexus为每个存储库存储工件,但那些未托管repos的存储仅用于缓存目的(如public
存储库的情况),您必须将您的内容复制到托管的内容才能工作。
您还必须考虑您在存储库中托管的是哪种工件。 Nexus将存储库划分为spanshots和release,具体取决于它承载快照构件还是发布+快照。虽然它很帅 – Miguel 2011-01-03 17:00:24
哦,我太迟读了你的回答。我想你的方法会为我节省很多时间。我还分离了快照和释放工件,然后手动将它们移动到相应的Nexus存储库。我以某种方式必须使用cli部署每个发布工件。对于快照,它可以重新索引Nexus缓存。谢谢! – mamuesstack 2011-03-15 07:40:00