Java Maven/Nexus-自动依赖项更新
我有点问题,想知道是否有什么方法可以做到这一点 从本质上说,我的团队维护一个“核心”,其中包含在我们所有项目中使用的通用代码。当然,我们在项目中使用Maven来管理它,但是出现了一个问题。本质上,在更新了“核心”之后,我们让Jenkins建立它并将其部署到一个私有的Nexus存储库中。这一切都很好 我所面临的问题是,我们应用的这些更改通常是为了添加我们碰巧遗漏的内容,或者将我们发现经常重写的内容移到“核心”中。然而,Maven需要时间来更新依赖项(除非我们完全刷新本地Maven缓存,这并不理想)。所以我的问题是,我如何才能绕过这个问题,让Maven“自动”更新本地存储库(可能只需点击一个按钮或使用一个命令[目前试图通过普通方法更新它,但不更新它])。我们目前使用的是“发布”存储库,而不是“快照”,但如果需要,我们当然可以进行更改Java Maven/Nexus-自动依赖项更新,java,maven,jenkins,nexus,Java,Maven,Jenkins,Nexus,我有点问题,想知道是否有什么方法可以做到这一点 从本质上说,我的团队维护一个“核心”,其中包含在我们所有项目中使用的通用代码。当然,我们在项目中使用Maven来管理它,但是出现了一个问题。本质上,在更新了“核心”之后,我们让Jenkins建立它并将其部署到一个私有的Nexus存储库中。这一切都很好 我所面临的问题是,我们应用的这些更改通常是为了添加我们碰巧遗漏的内容,或者将我们发现经常重写的内容移到“核心”中。然而,Maven需要时间来更新依赖项(除非我们完全刷新本地Maven缓存,这并不理想)
有没有办法做到这一点 对更新的工件使用相同的版本违背了Maven的期望-假定发布(非快照)版本是最终的且不变的,它应该唯一地标识组装的工件。在不更新版本的情况下更改发布版本代码可能会生成不可恢复的版本 您可以改为使用快照版本,或者每次都将核心构建为新版本,或者在需要时更新依赖项,或者使用-like
[1.5,)
就个人而言,如果核心经常更改,并且项目发布相对较少,我会使用快照版本(请记住,无论何时发布任何依赖的项目,都应该构建核心的发布版本!),并且如果与依赖项目的发布频率相比,核心相对稳定,则每次都会使用新的核心版本和新版本
如果使用版本范围来定义核心依赖项,则每当在核心中进行API破坏性更改时,应更新依赖项目中的范围(执行此操作时,依赖旧API的项目现在必须引用不到此新版本的版本范围(即以前的版本而不是范围),并且依赖于新API的项目必须使用从当前版本开始的版本范围)。正如其他人所说的,使用samve版本来处理已更改的工件不仅在Maven中没有意义,而且在一般情况下也没有意义。 如果您对核心组件进行了一些开发,而该组件被更多的其他项目使用,那么您的组件应该有一个常规版本,这意味着您从
1.0.0
开始。进行一些错误修复,您可能会得到1.0.1
或一些其他增强功能,您可以使用1.1.0
等。因此,现在来看看正在使用的项目。在那里,你可以使用版本maven插件来更新依赖项。除此之外,如果你在Mave中使用了正确的方法,你已经通过DependencyManager在一个中心位置定义了对核心的依赖项,该版本应该只是一个位置,这意味着更新只是更新pom中的一行,所以我看不到任何更新这里真正的问题是,这也可以通过版本maven plugin
来实现,下一步是通过jenkins作业来实现……当然,在核心的大规模开发过程中,您可以使用-SNAPSHOT
参考
Maven和其他类似工具的基础之一是发布版本是不可变的。您是否使用新版本号部署更改后的
核心?您是否仅依赖于核心,还是项目中的某个特定版本?您是否尝试过mvn-U…
?我更愿意使用相同的版本所以我不必每次提交时都更新它。而且mvn clean install-U
不起作用。谢谢!我觉得这是一个比我目前使用的更好的计划。