有时我需要根据我的特定需求修改第三方库。它可以是错误修复、性能改进、添加功能等。

例如,我将 JSoup 和 Android 支持库源包含到我的项目中并进行了一些更改。我也对来自 Android 源代码的 2 个 Java 文件做了同样的事情。

我应该如何记录这个?

最佳答案

规则1

别。维护库的 fork 版本很痛苦,尤其是当您想要升级库并需要一遍又一遍地向后移植更改时。更不用说有一天有人会忘记您的版本并使用标准版本。

因此,始终尝试包含在没有您更改的情况下失败的测试用例(在您的代码中暴露外部库中的错误)。

规则 0

始终将您的更改提交给原始作者/维护者。提出问题并包含您的补丁。如果您的更改值得违反规则 -1,则它可能会包含在下一个版本中。

规则1

提交库的原始源文件,不做任何更改。然后用描述性消息提交每一个改进/错误修复。最好包含问题/票证 ID,该 ID 将指向您(或图书馆)票务系统中的解释。

这样,在浏览此给定目录或项目的提交列表时,您可以轻松查看已更改的内容。如果提交信息不足以描述需要 fork 和修改外部库,您可以随时浏览 issue/ticket。同样在理想的世界中,这样的提交是一个理想的补丁(参见规则 0)。

奖励 :我曾经有过通过 maven 插件自动 fork 和修补外部库的想法。基本上我们指示这个假设的插件在特定库上应用给定的补丁。 Maven 可以轻松地下载源代码、重建、安装并自动包含修改后的版本,而不是目标工件中的原始版本。

不需要维护 fork 的二进制文件,只要补丁仍然干净地应用于新版本,就可以轻松升级。有人在这里有太多空闲时间吗?

关于java - 如何记录第 3 方库的修改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11074313/

10-10 17:49