16

我已经成功地为 Java 应用程序创建了一个小型软件工程环境 (SEE),它是基于 maven 和 nexus 的工具之一。我的实际问题是——这并不奇怪——nexus 通常需要访问互联网才能从中央存储库中获取请求的工件。但是 SEE 必须严格脱机并且没有办法改变它(.. 安全原因)。

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

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

编辑

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

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

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

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

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

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

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

4

4 回答 4

6

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

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

其实我最初的想法是:

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

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

于 2009-11-18T14:17:29.860 回答
4

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

  1. 将更新的软件上传到“安全”主机(步骤石)
  2. 从网络上断开阶梯石
  3. 将阶梯石连接到安全网
  4. 将更新的软件推送到存储库
  5. 从安全网络断开阶梯石

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

于 2009-11-16T15:51:47.900 回答
3

我在我的环境中遇到了类似的问题。

通常我们托管 Nexus 的服务器将无法访问 Internet。然而,我与运营团队会面并向他们解释说,允许 Nexus 自动从 Internet 下载工件对我们来说是一个巨大的生产力胜利。

一旦他们了解了我们的需求,ops 就允许服务器访问非常严格的 Internet IP 白名单,例如中央 Maven 存储库。因此,当外部存储库 IP 地址发生变化时,我们仍然需要通过操作来添加新存储库或执行白名单修复。但总的来说,我们认为这是安全性和生产力之间的最佳折衷方案,并且对我们有用。

看看您的利益相关者是否会以高度受限的仅限白名单的方式将您的网络连接到互联网,一旦您向他们重申这样做将如何提高您的工作效率并最终节省每个人的时间。

于 2009-11-16T17:32:19.707 回答
3

Nexus Pro 中的采购功能正是为处理此用例而设计的。

什么是采购?

采购套件用户指南

于 2009-11-18T02:55:28.600 回答