如何在nexus存储库之间(半自动)同步Maven人工制品?

如何在nexus存储库之间(半自动)同步Maven人工制品?,maven,nexus,Maven,Nexus,我们有一个Nexus存储库,用于存储Java EE应用程序的maven artefacts。我们的开发人员在进行本地构建时连接到该存储库 然而,对于一个完整的构建,我们需要来自客户所在的Nexus存储库的人工制品,该存储库只能通过手动VPN连接使用——而在连接时,我们没有连接到自己的存储库 现在,有什么好方法可以(至少是半)在连接客户站点的同时自动从客户站点获取所有新的人工制品,并将它们放入我们自己的存储库 到目前为止,我的想法是在进行VPN连接的机器上本地运行Nexus,并让它与我们的和他们的

我们有一个Nexus存储库,用于存储Java EE应用程序的maven artefacts。我们的开发人员在进行本地构建时连接到该存储库

然而,对于一个完整的构建,我们需要来自客户所在的Nexus存储库的人工制品,该存储库只能通过手动VPN连接使用——而在连接时,我们没有连接到自己的存储库

现在,有什么好方法可以(至少是半)在连接客户站点的同时自动从客户站点获取所有新的人工制品,并将它们放入我们自己的存储库

到目前为止,我的想法是在进行VPN连接的机器上本地运行Nexus,并让它与我们的和他们的同步-这听起来合理吗,或者有谁有更好的想法?
如何通过Nexus web前端编写脚本或进行配置,以便每次连接到一个或另一个网络时,它都能与两个网络的其中一个同步?

您可以使用rsync。或者其他类型的“同步”软件。但它需要通过SSH或FTP访问文件系统。您也可以插入您的vpn。从远程nexus下载所需的所有人工制品。并通过用户界面将它们手动上传到您自己的nexus。另一个解决方案(在我的评论中提到)是用自己的nexus代理远程nexus,并且只在需要时启用VPN


为了符合我的问题,我将加强回答,因为它指向了正确的方向:


一个Nexus代理另一个是一个好主意,只是它需要一个本地Nexus在集线器机器上运行-这样,在settings.xml中使用正确的镜像设置,Nexus代理链可以通过VPN线路。唯一的问题是(幸运的是,hub机器和以前的开发者笔记本电脑一样)为了将maven人工制品拉到hub的Nexus上,必须在hub机器上进行构建,然后它可以进一步拉到我们自己的Nexus上。

也许我没有正确理解这个问题,但也许你可以用Nexus代理存储库。@drgn:看,问题是当时,当开发机器需要一个在pom中引用的maven工件而在本地没有它时,它将需要客户的Nexus提供它,但由于独立的网络而无法访问它。另一方面,当连接到客户的网络时,开发机器被切断,因此构建无法启动。因此,需要的是一种两步机制,集线器pc可以将工件从客户的nexus移动到我们自己的nexus,这取决于网络的哪一侧处于活动状态。我理解,但当您使用nexus代理另一个nexus时,它会将其保留在本地。在我工作的地方,我们使用2个nexus。1个外部代理我们的客户nexus(通过vpn),1个内部代理我们自己的产品。如果使用该方案,您所能做的就是在settings.xml中引用这两个nexus(如果您使用的是maven)。当您需要客户提供的新产品时,只需打开VPN即可。我将发布另一个解决方案的答案。我认为最后提到的解决方案就是那个。因此,您提到的外部Nexus将是集线器机器上的Nexus,当VPN打开时可以访问客户的Nexus,而我们的内部Nexus可以在VPN关闭时访问集线器机器的Nexus。然后,我需要的是每个Nexus对之间的同步,因此当VPN打开时,集线器Nexus可以主动同步客户的一个(如阴影),而VPN关闭时,我们的Nexus可以主动同步集线器机器的一个。如果可以编写脚本,那就太完美了。nexus存储库可以与名为rsync(linux)的工具同步。如果我没有错的话,nexus必须重新编制索引。如果您需要关于该主题的更详细帮助,请告诉我。我认为rsync在这里没有帮助,因为我无法访问客户的Nexus文件系统。我所拥有的只是指向存储库的URL,在进行网络访问时可以在Maven设置中使用。你有点不耐烦吗?;-)别担心,我知道这是怎么回事。您的评论提示听起来很有希望,但它还没有回答我的问题,因为我不清楚两个nexus将如何同步。正如我所说,当VPN开启时,集线器机器与我们自己的网络完全断开,运行maven构建的开发人员机器将无法到达客户的nexus。因此,我需要以某种方式将人工制品从那里转移到中心,并在第二步中从中心转移到我们的nexus。如果您能引导我找到这样的解决方案,我将很乐意接受。让我们给您的NexusA和客户NexusB打电话。当开发人员开始maven构建时。它应该联系没有依赖关系的Nexus A。然后,Nexus A将尝试联系Nexus B,但由于VPN连接已关闭,因此将失败。然后,打开VPN,再次启动构建。Nexus A将联系Nexus B,并将本地副本存储在Nexus A上,然后将其提供给您的开发人员。您现在可以关闭VPN。因为Nexus A存储了一个人工制品的本地副本。每次需要新的人工制品时,您都需要重复此过程。如果我听起来不耐烦,我道歉:)