在本地网络中使用 Sonatype nexus [已关闭]

2022-09-03 07:03:37

我已经成功地为Java应用程序创建了一个小型软件工程环境(SEE),该环境以及其他工具基于maven和nexus。我的实际问题是 - 这不是一个真正的惊喜 - nexus通常需要访问Internet才能从中央存储库中获取请求的工件。但是SEE必须严格离线,并且无法更改它(..安全原因)。

我的第一个快速解决方案是镜像连接到互联网的计算机上的nexus/maven安装,运行一些标准的pom来填充镜像的nexus,并通过CD-ROM将缓存迁移到目标系统。相当丑陋。我并不真的期待调整该过程以获得工件或新工件的更新。事实上,我们现在通常只是导入我们需要的库并创建新的工件(带有nexus),而不是使用来自中央和其他方面的官方工件。

有没有人面临同样的挑战,并找到了一种更聪明、更有效的方法?

编辑

感谢所有的答案,我认为我必须更精确地了解我目前正在考虑的实际问题和解决方案:我认为我必须创建,填充和同步一个私有的“中央”存储库,基于互联网上的中央和其他存储库,或者确切地说:两个相同的存储库。一个连接到互联网,另一个连接到本地网络。然后,我可以使互联网连接的存储库保持“最新”,并通过DVD将更改复制到本地存储库 - 这对Nexus是可见的。

它会起作用吗?是否有关于如何在私有服务器上设置“central”之类的东西的文档,是否有同步所选工件的机制?

(一开始不想发布我的想法,因为我希望得到完全不同的想法)

编辑 2 - “最佳实践” - 根据要求添加

我们在完全与互联网断开连接的环境中使用maven的“最佳实践”:

  • 我们在中央服务器上安装了nexus,以便软件开发工作站有一个服务器可以与之通信(这是我们自己的人工制品存储库)
  • 我们将POM文件导出到具有Internet访问权限的工作站,清除该机器上的本地存储库并执行(插件)。这用所有必需的工件填充了本地存储库dependency:go-offline
  • 我们将此本地存储库导入安全环境,并将所有插件添加到nexus(只是复制了文件 - 结构相同)

每周对所有POM文件执行此操作一次(可以自动执行),并且您拥有一个非常稳定且可用的本地存储库。


答案 1

它会起作用吗?是否有关于如何在私有服务器上设置“central”之类的东西的文档,是否有同步所选工件的机制?

好吧,你可以成为中央的镜子,但是,抓住大约10 GB的伪像有什么意义呢?您不需要所有这些,通常的建议是使用存储库管理器。

实际上,我最初的想法是:

  1. 使用连接到 SEE 外部互联网的 Nexus
  2. rsync将此Nexus的内容转换为DVD。
  3. 通过 DVD 将内容复制到 SEE 的 Nexus。
  4. 定期重复。

我发现这个解决方案很丑陋,但是,现在我们有了关于您的情况的更多详细信息,它可能是可以接受的。


答案 2

我曾经在网络环境中工作过,其中网络的一部分无法访问互联网或任何其他网络。每当我们需要更新此网络中的软件时,我们都会执行以下操作:

  1. 将更新的软件上传到“安全”主机(踏脚石)
  2. 断开踏脚石与网的连接
  3. 连接踏脚石到安全网
  4. 将更新的软件推送到存储库
  5. 断开踏脚石与安全网的连接

我们通过自动配置交换机以适当地连接和断开网络(因此始终存在物理连接但没有可用的IP连接)来完全自动化此过程。也许你可以做类似的事情 - 它只是取决于“断开连接”定义的灵活性;)


推荐