Maven/Nexus - 自动依赖更新

Maven/ Nexus - Automatic Dependency Update

我遇到了一些问题,想知道是否有任何方法可以做到这一点。

本质上,我的团队维护着一个 "core",其中包含在我们所有项目中使用的通用代码。当然,我们使用 Maven 来管理我们的项目,但是出现了一个问题。本质上,在更新 "core" 之后,我们设置了 Jenkins 来构建它并将其部署到私有 Nexus 存储库。这一切都很好。

我遇到的问题是,我们应用的这些更改通常是为了添加我们碰巧遗漏的内容或将我们发现经常重写的内容移动到 "core"。但是,Maven 需要时间来更新依赖项(除非我们完全刷新本地 Maven 缓存,这不太理想)。所以我的问题是我怎样才能绕过 Maven "automatically" 的位置(可能是单击按钮或使用命令 [当前尝试通过正常方法更新它不更新)它]) 更新本地存储库。我们目前正在使用 "Releases" 存储库而不是 "Snapshots",但当然我们可以根据需要进行更改。

有什么办法可以实现吗?

对更新的工件使用相同的版本违背了 Maven 的预期 - 发布(非快照)版本被假定为最终且不变的,它应该唯一标识组装的工件。更改发布版本代码而不更新版本会产生不可重复的构建!

您可以改用快照版本,或者每次都将核心构建为新版本,并在需要时更新依赖项或使用 version range - 如 [1.5,).


就个人而言,如果核心经常更改并且项目发布相对较少,我会使用 SNAPSHOT 版本(请记住,无论何时发布任何相关项目,您都应该构建核心的发布版本!),并且会如果与依赖项目的发布频率相比核心相对稳定,则每次都使用新版本的新核心版本。

如果您使用版本范围来定义核心依赖项,则每当您在核心中进行 API 重大更改时,您应该更新依赖项目中的范围(当您这样做时,依赖于旧的 API 现在必须引用这个新版本之前的版本范围(或者说是以前的版本而不是范围),并且依赖于新的 API 的项目必须使用从当前版本开始的版本范围) .

正如其他人所说,对更改后的工件使用 samve 版本没有意义,不仅在 Maven 中,而且在一般情况下也是如此。 如果你在你的核心组件上做了一些开发,这个组件被更多的其他项目使用,而不是你的组件应该有一个通常的版本,这意味着你从 1.0.0..做一些错误修复你可能会得到 1.0.1 或您可以使用 1.1.0 等的其他一些增强功能。所以现在是消费项目。您可以在那里使用 versions-maven-plugin 来更新依赖项。除此之外,如果你在 Mave 中以正确的方式完成它,你已经通过 dependencyManagement 在中央位置定义了对核心的依赖关系,版本应该只是一个位置,这意味着更新只是更新 pom 中的一行所以我在这里看不到真正的问题,这也可以通过 versions-maven-plugin 来完成,进一步的步骤是通过 jenkins 工作来做到这一点......当然,在核心的大量开发过程中,你可以使用-SNAPSHOT参考...

Maven 和其他类似工具的基础之一是发布版本是不可变的。