java - Maven/Nexus - 自动依赖更新

标签 java maven jenkins nexus

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

本质上,我的团队维护一个“核心”,其中包含在我们所有项目中使用的通用代码。当然,我们使用 Maven 来管理我们的项目,但出现了一个问题。本质上,更新“核心”后,我们设置 Jenkins 来构建它并将其部署到私有(private) Nexus 存储库。这一切都运行良好。

我遇到的问题是,我们应用的这些更改通常是为了添加我们碰巧错过的东西,或者将我们发现经常重写的东西移动到“核心”。但是,Maven 需要时间来更新依赖项(除非我们完全刷新本地 Maven 缓存,这不太理想)。所以我的问题是如何解决这个问题,Maven 将“自动”(它可以通过单击按钮或使用命令[当前尝试通过正常方法更新它,但不会更新它]) ) 更新本地存储库。我们目前使用“发布”存储库而不是“快照”,但当然我们可以根据需要进行更改。

有什么办法可以实现这一点吗?

最佳答案

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

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


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

如果您使用版本范围来定义核心依赖项,则每当您在核心中进行 API 破坏性更改时,您都应该更新依赖项目中的范围(当您执行此操作时,依赖于旧 API 的项目现在必须引用版本range 停止于这个新版本(或者说以前的版本而不是 range),并且依赖新 API 的项目必须使用从当前版本开始的版本 range)。

关于java - Maven/Nexus - 自动依赖更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36172127/

相关文章:

java - GWT + Struts2 与 DOJO + Struts2

java - 如何将显示 SVG 的 WebView 缩放到固定像素高度?

eclipse - 每次更改源文件 (GWT) 时都会调用 Maven Project Builder

java - Maven,本地目录的相对路径

Jenkins声明式管道条件后 Action

java - 如何在流布局中组织对象?

java - 通过签名 URL 将文件放入 Google Cloud Storage (GCS)

Springboot :BeanDefinitionStoreException: Failed to parse configuration class

maven - Jenkins中未显示Maven安装设置

linux - 如何使 "./gradlew"与 "sudo ./gradlew"相同?