具体背景
我刚从spring数据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
但是,这似乎并不合适。我是否真的必须完成整个项目并更改所有代码才能更新?
一整行错误:
<div class="form-group">
@Html.CheckBoxFor(m => m.HasAcceptedTermsAndConditions)
@Html.LabelFor(m => m.HasAcceptedTermsAndConditions)
@Html.ValidationMessageFor(m => m.HasAcceptedTermsAndConditions)
@Html.Hidden(nameof(Model.IsTrue), "true")
</div>
答案 0 :(得分:1)
这不是特定于maven的,无论您使用什么构建系统,都会遇到此问题。
但我不明白为什么你会想要这个,一个主要的版本更改(例如4.xx到5.xx)意味着某些东西会破坏,你将不得不对你的代码进行更改。
答案 1 :(得分:1)
您无法阻止外部依赖项引入重大更改。但是,您可以编写代码,以便最小化更新外部依赖项。
我观察到实际上并没有太多关注依赖关系,就好像它们是免费的一样。最初它们和free一样好,但是一旦你开始堆叠你的依赖项并且具有冲突的传递依赖性,或者你升级到具有重大变化的新版本,则会产生维护成本。我已经看到了依赖网络如此复杂以至于应该从头开始重写的项目,如果不是因为管理层不了解技术债务的概念,生活在维护现有(坏)版软件更便宜的幻想中而不是写一个新的。
防止外部依赖性的唯一选择是以某种方式封装它们。这可能涉及一些锅炉板代码,但如果这个锅炉板代码很小,那么这可能是值得的。
因为我已经看到了具有可怕依赖性的项目,所以我已经考虑过如何防止这种依赖性混乱,并制作了以下图像:
您无法控制的外部代码为红色。如果您不考虑构建代码,则代码(橙色)将直接依赖于外部代码,并且存在外部更改的风险。您可以尝试编写不依赖于外部代码的代码(绿色)。实现此目的的方法是在自己的界面中定义所需的外部功能。然后你有一些代码(橙色)实现这些接口并具有外部依赖性。您通过依赖注入框架注入具有外部依赖性的代码。
此方法将外部更改的影响限制为仅橙色代码。但是,它需要更多的计划,而不是直接在代码中的任何位置使而且因为更多的计划意味着更多的努力,所以通常不会付诸实践。