使用RCP的同学们应该都知道,p2仓库管理软件包的Layout和maven自身的不同的。当使用Export Product时, 就可以看到repository文件夹里,软件包的放置是完全不同的。
Sonatype Nexus OSS可以部署p2的proxy repository, 但不能部署host repository (当然可以出银子买Professional版). 如何在OSS版里实现呢?大家可以通过unzip repository plugin来实现。
原理
unzip repository plugin的工作原理就是:
- 指定某个Host Repository做为目标仓库
- 解压Host仓库里的Zip文件,形成可以访问的且保留了原压缩包中文件夹结构的Virtual仓库
利用这个功能,就间接的做出p2的仓库,主要步骤:
- 含有p2 layout的仓库做成zip
- 上传或安装到某Host Repository
- 设置Virtual Repository并指向Host Repository
Plugin安装
点这下载unzip repository plugin bundle file. 解压到Nexus的Plugin文件夹中,重启Nexus Server。
配置Virtual Repository
以Eclipse Nebula 1.0为例,配置Virtual Repository。
Eclipse Nebula Project提供了很多SWT的高级控件,很好的补充了原有的控件集。但它自身的Repository一直处于Snapshot状态,所以经常变动,很容易把持续集成搞挂。我们就遇到了两次。
有了Unzip virtual repository,这个情况就可以改变了。先下载Nebula 1.0的zip包,上传至一个Host Repo里。
再新建一个Virtual Repository,Provider选择为“Unzip Repository Template”.
再去查看Virtual Repo,就可以看到Zip文件被解开成p2 layout的文件夹了。
使用Virtual Repository
在Target Platform中使用我们定义的Virtual Repository,和普通的p2 repository一样。
总结
unzip repository plugin很大程度上提高了Nexus的灵活性,不单单只是支持Maven的layout,还可以支持p2或其他layout. 我们的项目也可以向Nexus提交Eclipse RCP的代码仓库。
好东西,与大伙分享!