维护第三方Java库依赖项的修补程序

时间:2013-07-21 18:05:35

标签: java git maven jar gradle

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

我需要对xyz的源代码做一些小调整,但仍希望从项目维护者那里获得更新。我有什么选择?

目前,最佳选择似乎是:

  1. 使用git svn clone将xyz的svn repo分成 new git repo。
  2. 攻击git repo。
  3. 从git repo构建xyz-hacked.jar并将工件导出到maven库服务器。
  4. 当xyz出现新变化时,我可以执行git svn rebase以使我的git repo保持最新状态。

    这里的最佳做法是什么?我可以改进这种方法吗?

    修改

    我知道会涉及一些手动工作,例如解决合并冲突并确保我的补丁与最新的xyz兼容。我不是在寻找通用的自动代码合并解决方案。我试图找出在这种情况下最佳实践和工具是什么。

    摇篮

    我不认为这是Gradle特定的问题,但以防万一有Gradle特定的答案:我正在使用Gradle将xyz.jar包含为“编译”依赖项。

2 个答案:

答案 0 :(得分:1)

无论您使用何种方法,它都将是劳动密集型的。

显式冲突将会发生,但更加阴险,基地中任何地方的任何变化都可能完全破坏您的本地模式,甚至是本地模组不接触的源文件的更改(即您依赖的接口签名)。

每个rebase都需要在第三方库和依赖于库的应用程序上进行手动合并和完整的回归测试。

根据定义,这不是自动化的。

答案 1 :(得分:0)

我认为你应该考虑以下几点:

  • 您不知道exacltyy项目维护人员将如何更改源代码。因此,虽然您可以使用rebase应用大多数更新,但在某些时候您最终将面临一个必须手动重新安装的冲突。
  • 此第三方库可能不会经常更改。即使它确实如此,但这并不意味着您必须立即更新您的依赖关系。做什么的?该库可能有很多很多的更新,无论如何都不会影响你的代码。那么为什么要烦恼呢?

我认为这种问题无论如何都不应该自动化,因为这种情况非常罕见,无论如何都需要你的人工干预。即你将花费更多的时间来尝试自动化,而不是像你手动重建一样,比如半年一次。