Java 如何记录第三方libs修改?

Java 如何记录第三方libs修改?,java,documentation,comments,maven,Java,Documentation,Comments,Maven,有时我需要修改第三方库以满足我的特定需求。它可以是bug修复、性能改进、添加功能等 例如,我在我的项目中包括了JSoup和Android支持库源代码,并做了一些更改。我也用Android源代码中的2个Java文件做了同样的事情 我应该如何记录这一点?规则-1 不要。维护库的分叉版本是一件痛苦的事情,尤其是当您想要升级库并且需要一次又一次地备份更改时。更不用说有一天有人会忘记你的版本而使用标准版本 因此,始终尝试包含未经更改就失败的测试用例(将外部库中的错误暴露在代码中) 规则0 始终将更改提交给

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

例如,我在我的项目中包括了JSoup和Android支持库源代码,并做了一些更改。我也用Android源代码中的2个Java文件做了同样的事情

我应该如何记录这一点?

规则-1 不要。维护库的分叉版本是一件痛苦的事情,尤其是当您想要升级库并且需要一次又一次地备份更改时。更不用说有一天有人会忘记你的版本而使用标准版本

因此,始终尝试包含未经更改就失败的测试用例(将外部库中的错误暴露在代码中)

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

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

这样,当浏览给定目录或项目的提交列表时,您可以很容易地看到已更改的内容。如果提交消息不足以描述分叉和修改外部库的需要,则始终可以浏览问题/票据。在理想情况下,这样的提交也会产生理想的补丁(请参见规则0)


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


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

你想怎么做都行,现在是你的了。我从不修改别人的库。它们应该为定制提供钩子,但在我修改它的那一刻,我必须永远向前移植这些更改。你确定要这么做吗?