我使用Nexus作为我的项目的存储库,使用Jenkins作为我的CI orchestrator。
在Jenkins作业结束时,我调用Nexus REST API来重新构建Maven元数据,这样就可以更新关于每个组件的最新版本的信息。当执行REST调用时,它会立即返回,但更新任务实际上会在Nexus中排队并最终执行。
因为我有几个并行运行的作业,所以有时当其中一个组件试图从Nexus中提取依赖项而Maven元数据尚未完成刷新时,构建会遇到某种竞争条件-因此,即使新版本已经存在,元数据即将刷新,也会从Nexus中提取旧版本。
防止这种情况的一个好方法是使此调用同步,即阻止构建,直到实际重新构建Maven元数据。
当然,我可以通过在循环中轮询Nexus以获取组件的最新版本,直到它被更新,从而以编程方式完成此操作。然而,我想知道是否有一种方法可以使用Nexus API来做到这一点。有什么想法?
发布于 2016-07-23 07:51:21
在大量的研究之后,我找不到任何关于这方面的文档,在这里也没有得到回复。我通过以编程方式检查Maven元数据直到它被更新来解决这个问题。
https://stackoverflow.com/questions/38487339
复制相似问题