在我看来,我有一个有趣的案例。我们正在使用 maven,由于我们必须支持我们产品的多个版本,因此我们有时会使用 1.x 和 2.x 构建结构。当 1.x 和 2.x 并行构建时,有时我们会看到
安装工件的元数据时出错:安装元数据时出错:更新组存储库元数据时出错
据我所知,本地用户存储库中的 maven-metadata-local.xml (对于工件,而不是工件的版本)同时被另一个 maven 进程写入。有没有办法让 maven 并行构建这两个,但等待文件上的写锁来更新它?
听起来您正在为所有构建作业使用相同的本地存储库,而您已经知道这些作业将无法正常工作。Jenkins/Hudson/CI 的重点是为每个构建作业使用本地 maven 存储库。您需要在 Jenkins 中使用本地 maven 存储库进行配置以避免此类情况。
您还可以安装Concurrent Safe Local Repository Access maven 插件,这将允许您使用相同的本地存储库。(如果您正在动态配置代理,则很有用)
使用 Maven 设置 (Admin/Configure) 下的第二个或第三个选项:
这些选项来自:Maven 项目插件
现在可以从maven 3.8.2开始同时访问存储库
需要手动安装和配置库以实现并发安全访问