我的 Java 项目依赖于第三方库,我们将其称为 xyz.jar。我的项目是在git中维护的,xyz在svn中维护的。 xyz 作为 Maven 依赖项包含在我的项目中,以便它作为构建过程的一部分自动下载。
我需要对 xyz 的源进行细微调整,但仍然希望从项目维护者那里获取更新。我有什么选择?
目前,最好的选择似乎是:
- 使用
git svn clone
将 xyz 的 svn 存储库 fork 为新 git 存储库。 - 破解 git 存储库。
- 从 git 存储库构建 xyz-hacked.jar 并将 Artifact 导出到 Maven 库服务器。
当 xyz 出现新更改时,我可以执行 git svn rebase
来使我的 git 存储库保持最新。
这里的最佳实践是什么?我可以改进这种方法吗?
编辑
我知道会涉及一些手动工作,例如解决 merge 冲突并确保我的补丁与最新的 xyz 兼容。我并不是在寻找通用的、自动的代码 merge 解决方案。我正在尝试找出这种情况下的最佳实践和工具。
Gradle
我不认为这是一个特定于 Gradle 的问题,但以防万一有一个特定于 Gradle 的答案:我使用 Gradle 将 xyz.jar 作为“编译”依赖项包含在内。
最佳答案
无论您使用什么方法,它始终是劳动密集型的。
会发生显式冲突,但更阴险的是,基础中任何地方的任何更改都可能完全破坏您的本地 mods,甚至本地 mods 不触及的源文件中的更改(即您依赖的接口(interface)签名)。
每个 rebase 都需要对第 3 方库以及依赖于该库的应用程序进行手动 merge 和完整回归测试。
根据定义,这是不可自动化的。
关于java - 维护第三方Java库依赖项的补丁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775287/