我在我正在使用的更大的应用程序框架中发现了一个小错误。修复只需要更改单个类中的两行。我解决了这个问题并将更改推送到项目的存储库。
但是,我需要明天发布。因此,我不能等到图书馆发布新版本。我想知道将修补版本集成到我的项目中的最佳方法是什么:
构建项目:我觉得这很困难,我什至无法正确构建它,因为快照存储库中有太多单元测试被破坏,即使没有单元测试,我也没有走得太远,因为我显然缺少一些无法找到的依赖项在 Maven 中心。另外,我需要将固定版本发送给所有其他开发人员,因为在 Maven Central 上找不到它。(我们在网络上工作,我们没有自己的 Nexus。)
在我的项目中添加一个新模块,我在其中保留了已修复的类的副本。然后,我将此模块作为依赖项添加到所有应该使用该类的覆盖版本的模块。但是 JVM 是如何确定它实际加载的类的呢?它将找到两个包含同名类的jar文件。它将实际加载哪一个?如果我能完成这项工作,这将允许我将修改后的类版本与我的项目集成,这样我就可以将补丁与项目一起分发,一旦错误得到修复,我就可以简单地删除模块。
我将修改后的类文件包含到受影响的模块本身中。到目前为止,这对我来说似乎是最简单的解决方案,因为 JVM 总是首先从同一个 jar 加载类。(我说得对吗?至少这是我在测试中观察到的。)
感谢您对此的任何意见。