gpt4 book ai didi

java - 新版本发布时如何避免对 Maven 项目进行大量更改

转载 作者:行者123 更新时间:2023-12-02 02:34:47 25 4
gpt4 key购买 nike

具体背景

我刚刚从 spring data neo4j 4.1.3 切换到 5.0.0自从我更改了我的pom文件后,这个问题就出现了。

Maven 安装失败,因为“找不到符号...类 GraphRepository”

我对整个 Java Maven 项目比较陌生

广泛的问题:

如果我将给定项目的 Maven 依赖项从一个版本更新为另一个版本,并且我一直在大量使用的类现在会给出大约 100 个错误代码,表示整个类现在丢失了...我怎么才能不出现这个问题呢?发生。

具体我认为我所处的位置

我必须删除对“GraphRepository”的所有引用并将其更改为 Neo4jRepository,因为“另请注意,GraphRepository 已被弃用并被 Neo4jRepository 取代”- Neo4j 4.2 graph repo save method is now ambiguous

但是,这似乎不对。我真的需要遍历整个项目并更改所有代码才能更新吗?

一整行错误:[错误]/.../service/SupportModelServiceImpl.java:[10,49] 找不到符号
符号: GraphRepository 类
位置:包org.springframework.data.neo4j.repository

最佳答案

您无法阻止外部依赖项引入重大更改。但是,您可以编写代码,以便花费最少的精力来更新外部依赖项。

我观察到,在实践中,并没有对依赖项给予太多关注,就好像它们是免费的一样。最初它们是免费的,但是一旦您开始堆叠依赖项并具有冲突的传递依赖项,或者您升级到具有重大更改的新版本,就会产生维护成本。我见过一些项目,其中的依赖关系网络非常复杂,以至于应该从头开始完全重写,如果不是管理层不理解技术债务的概念,生活在维护现有(坏)版本的软件更便宜的幻想中而不是编写一个新的。

防止外部依赖的唯一选择是以一种或另一种方式封装它们。这可能涉及一些样板代码,但如果这些样板代码很少,那么付出的努力可能是值得的。

因为我见过具有可怕依赖性的项目,所以我思考了如何防止这种依赖性困惑,并制作了以下图像:

Insulating dependencies

您无法控制的外部代码呈红色。如果您不考虑构建代码,您的代码(橙色)将直接依赖于外部代码,并且面临外部更改的风险。您可以尝试编写不依赖于外部代码的代码(绿色)。实现此目的的方法是在自己的接口(interface)中定义所需的外部功能。然后,您将拥有一些实现这些接口(interface)并具有外部依赖项的代码(橙色)。您可以通过依赖项注入(inject)框架向代码注入(inject)外部依赖项。

此方法将外部更改的影响限制为仅橙色代码。然而,与直接在代码中随处使用依赖项相比,它需要更多的规划。而且由于更多的计划意味着更多的努力,因此通常不会付诸实践。

关于java - 新版本发布时如何避免对 Maven 项目进行大量更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46548896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com