Maven / Nexus - 自动依赖更新

时间:2016-03-23 07:29:47

标签: java maven jenkins nexus

我有一点问题,想知道是否有办法做到这一点。

基本上,我的团队维持着一个核心"包含在我们所有项目中使用的公共代码。当然,我们使用Maven在我们的项目中管理它,但是出现了一个问题。基本上,在更新"核心"之后,我们将Jenkins设置为构建它并将其部署到私有Nexus存储库。一切正常。

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

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

对于更新的工件使用相同的版本符合Maven的期望 - 假定版本(非快照)版本是最终的且不变的,它应该唯一地标识组装的工件。在不更新版本的情况下更改发行版本代码可能会产生不可重复的构建!

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

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

如果您使用版本范围来定义核心依赖关系,那么每当您在核心中进行API更改时,都应该更新依赖项目中的范围(当您执行此操作时,依赖于旧API的项目现在必须引用版本远离此新版本(或前一版本而不是范围)的范围,依赖于新API的项目必须使用从当前版本开始的版本范围。)

答案 1 :(得分:1)

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

Maven中的一个基础以及其他类似的工具是发布版本是不可变的。