我已经成功创建了一个用于Java应用程序的小型软件工程环境(SEE),其中包括基于maven和nexus的其他工具。我的实际问题是(并不意外),nexus通常需要访问互联网才能从中央存储库获取所需的构件。但是,SEE必须严格脱机,并且没有改变它的方法(出于安全原因)。
我的第一个快速解决方案是在连接到互联网的机器上镜像nexus / maven安装程序,运行一些标准POM以填充镜像的nexus,并通过CD-ROM将缓存迁移到目标系统。相当丑陋。我确实不想预测如何适应该过程以获取构件更新或新的构件。事实上,我们现在通常只导入我们需要的库并创建新的构件(使用nexus)而不是使用来自中央和其他地方的正式构件。
有人面对了同样的挑战并找到了更聪明有效的方法吗?
编辑
感谢所有答案,我认为我必须更精确地说明实际问题和我正在考虑的解决方案:我认为我必须创建、填充和同步一个基于互联网上的central和其他存储库的私有“中央”存储库,或者确切地说:两个相同的存储库。一个连接到互联网,另一个连接到本地网络。然后我可以保持与互联网连接的存储库“最新”,并通过DVD将更改复制到本地存储库-该存储库对Nexus可见。
这会起作用吗?是否有关于如何在私有服务器上设置类似“central”的文档?是否有选择性同步构件的机制?
(一开始我不想发表我的想法,因为我希望得到完全不同的想法)
第二次编辑 - “最佳实践” - 应请求添加
我们在完全断开与互联网的情况下使用maven的“最佳实践”:
- 我们在中央服务器上安装了nexus,以便软件开发工作站有一个服务器可以与之通信(它是我们自己的工件存储库)
- 我们将POM文件导出到一台有网络访问权限的工作站,清空了该机器上的本地仓库,并执行了
dependency:go-offline
(插件)。这样就可以将所有需要的构件填充到本地仓库中。 - 然后将这个本地仓库导入到安全环境中,并将所有插件添加到Nexus(只需复制文件即可-结构相同)。
每周执行此操作一次(可以自动化),您就可以拥有一个相当稳定和可用的本地仓库。