java - 维护第三方Java库依赖项的补丁

标签 java git maven jar gradle

我的 Java 项目依赖于第三方库,我们将其称为 xyz.jar。我的项目是在git中维护的,xyz在svn中维护的。 xyz 作为 Maven 依赖项包含在我的项目中,以便它作为构建过程的一部分自动下载。

我需要对 xyz 的源进行细微调整,但仍然希望从项目维护者那里获取更新。我有什么选择?

目前,最好的选择似乎是:

  1. 使用 git svn clone 将 xyz 的 svn 存储库 fork 为 git 存储库。
  2. 破解 git 存储库。
  3. 从 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/

相关文章:

java - @Controller 无法在 Spring boot 多模块 Maven 项目中的(模块 Web)子包中工作

java - 如何更改使用 Maven 构建的 Java 代码并在不构建新 jar 的情况下查看更改?

java - 使用 REST API 时出现内部服务器错误

java - 如何获取流的最大索引值

java - 在java中覆盖 "equals"的clojure等价物是什么?

Git 在一个命令中添加和提交

ruby-on-rails - 将Rails应用放在公共(public)git中,将私有(private)详细信息保密

Java仪器: HotswapaAent failed to reload class definition

java - Google App Engine 后端 servlet 没有响应

linux - `gh cli` 失败 `git@github.com: Permission denied (publickey)` 但 `gh desktop` 没有问题