我有一个分成多个 Maven 人工制品的 Web 项目。
假设它是:
- 一、罐子
- B、一个罐子
- C、一个罐子
- D、战争
因此,D 依赖于 B 和 C。B 依赖于 A。
这些模块版本并不总是同步的。
A 可以在版本 3-SNAPSHOT 上,而 B 仍然在版本 5 中,并且依赖于 A 版本 2。
我将詹金斯配置为在构建 A 时级联构建 B,在构建 B 或 C 时级联构建 D。当在 git 存储库中检测到更改时,这些模块也会重新构建。Artefacts 通过构建后操作自动部署在 nexus 存储库中。
因此,如果我在 git 中推送 A 的新版本 3-SNAPSHOT,则会构建一个 3-SNAPSHOT jar 并将其推送到 nexus 中。但是,由于 Jenkins 的依赖,触发了 B 版本 2(发布版本)的新构建。构建本身运行良好,但部署到 nexus 失败,因为我不允许重新部署发布工件。
我怎样才能避免这种情况?当工件具有发布版本并且此版本已存在于 nexus 中时,不尝试上传到 nexus 是可以接受的。
我正在使用 Jenkins 1.480 和 maven 3.0.4。