在将新版本发布到 M2 存储库之前使用修补库
Using patched library before publishing new version to M2 repository
这是我第一次想参与修复第三方开源库。库托管在 github,所以我创建了这个库的一个分支,我将我的分支克隆到我的计算机并为此修复创建了功能分支(之后进行单次提交合并)这不是问题。
问题是在我完成修复之后和库作者将修复发布到 Maven 存储库之前的时间。我想在我修复这个特定错误时尽快在我的项目中使用这个库。我目前只有一个人在做一个项目(这是我的宠物项目,真的)。但这只是时间问题,我的商业工作会遇到这样的麻烦,因为我不是唯一一个从事该项目的人。
我看到了这个问题的四个解决方案:
发布到本地maven repo
- 我知道怎么做
- CI 环境中有问题
在gradle
中配置本地依赖
- 丑
- CI
有问题
发布到public maven
- 在CI
工作
- 没做过
- 这不是我的图书馆 - 我不想在不是我的作品下签名
私人 Maven 托管在我的 VPS
- 一直想拥有一个
- 适用于 CI
- 我将不得不花一些时间阅读 - 因为我从未读过
你会怎么做?我的方法是否正确,或者我应该采取完全不同的方法?
肯定是选项 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 工件还是内部工件。
因此,使用存储库管理器不仅是解决您当前问题的好主意,它还可能解决您未来的许多问题。
此外,正如您所说,其他选项非常脆弱,原因与您提到的完全相同。
这是我第一次想参与修复第三方开源库。库托管在 github,所以我创建了这个库的一个分支,我将我的分支克隆到我的计算机并为此修复创建了功能分支(之后进行单次提交合并)这不是问题。
问题是在我完成修复之后和库作者将修复发布到 Maven 存储库之前的时间。我想在我修复这个特定错误时尽快在我的项目中使用这个库。我目前只有一个人在做一个项目(这是我的宠物项目,真的)。但这只是时间问题,我的商业工作会遇到这样的麻烦,因为我不是唯一一个从事该项目的人。
我看到了这个问题的四个解决方案:
发布到本地maven repo
- 我知道怎么做
- CI 环境中有问题
在gradle
中配置本地依赖- 丑
- CI 有问题
发布到public maven
- 在CI 工作
- 没做过
- 这不是我的图书馆 - 我不想在不是我的作品下签名
私人 Maven 托管在我的 VPS
- 一直想拥有一个
- 适用于 CI
- 我将不得不花一些时间阅读 - 因为我从未读过
你会怎么做?我的方法是否正确,或者我应该采取完全不同的方法?
肯定是选项 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 工件还是内部工件。
因此,使用存储库管理器不仅是解决您当前问题的好主意,它还可能解决您未来的许多问题。
此外,正如您所说,其他选项非常脆弱,原因与您提到的完全相同。