在将新版本发布到 M2 存储库之前使用修补库

Using patched library before publishing new version to M2 repository

这是我第一次想参与修复第三方开源库。库托管在 github,所以我创建了这个库的一个分支,我将我的分支克隆到我的计算机并为此修复创建了功能分支(之后进行单次提交合并)这不是问题。

问题是在我完成修复之后和库作者将修复发布到 Maven 存储库之前的时间。我想在我修复这个特定错误时尽快在我的项目中使用这个库。我目前只有一个人在做一个项目(这是我的宠物项目,真的)。但这只是时间问题,我的商业工作会遇到这样的麻烦,因为我不是唯一一个从事该项目的人。

我看到了这个问题的四个解决方案:

你会怎么做?我的方法是否正确,或者我应该采取完全不同的方法?

肯定是选项 4:"Private Maven hosted on my VPS".

设置私有存储库管理器实际上并不难。有几个开源存储库管理器,例如 Artifactory 的 Artifactory, Nexus or Archiva. I personnally have always used Artifactory so I can't speak for the others, but there is a very good official guide,它很好地解释了如何设置和配置它。

请注意,使用私有存储库管理器还有很多其他优点:

  • 它充当 public Maven 存储库的缓存,从而避免从 Internet 下载每个依赖项。这在 Internet 访问受限的情况下特别有用。
  • 它可以托管或不托管您的项目生成的私有库,与托管库的方式相同。我必须处理的一个例子是 Oracle JDBC 驱动程序:它不是 public 可用的,而且在每台开发人员机器上安装它都是一团糟。
  • 对于 Maven 项目使用它是透明的:依赖项的声明方式完全相同,无论是 public 工件还是内部工件。

因此,使用存储库管理器不仅是解决您当前问题的好主意,它还可能解决您未来的许多问题。

此外,正如您所说,其他选项非常脆弱,原因与您提到的完全相同。