簡體   English   中英

維護第三方Java庫依賴項的補丁

[英]Maintaining patches of third-party Java library dependencies

我的Java項目依賴第三方庫,我們稱其為xyz.jar。 我的項目在svn中的git和xyz中維護。 xyz作為Maven依賴項包含在我的項目中,因此在構建過程中會自動下載xyz。

我需要對xyz的源代碼進行細微調整,但仍想從項目維護者那里獲取更新。 我有什么選擇?

當前,最好的選擇似乎是這樣的:

  1. 使用git svn clone xyz的svn repo分叉到新的 git repo中。
  2. 破解git repo。
  3. 從git repo構建xyz-hacked.jar並將工件導出到Maven庫服務器。

當xyz出現新變化時,我可以執行git svn rebase來保持git repo處於最新狀態。

這里的最佳做法是什么? 我可以改進這種方法嗎?

編輯

我知道將涉及一些手動工作,例如解決合並沖突並確保我的補丁程序與最新的xyz兼容。 我不是在尋找通用的自動化代碼合並解決方案。 我正在嘗試找出在這種情況下的最佳實踐和工具。

搖籃

我不認為這是特定於Gradle的問題,但以防萬一有特定於Gradle的答案:我正在使用Gradle將xyz.jar包含為“編譯”依賴項。

無論您使用哪種方法,都將總是勞動密集型的。

將會發生明確的沖突,但是更隱蔽的是,基礎上任何地方的任何更改都可能完全破壞您的本地mod,甚至您本地mod不會觸摸的源文件的更改(即您依賴的接口簽名)。

每個基准庫都需要對第三方庫以及依賴該庫的應用進行手動合並和完整的回歸測試。

根據定義,這不是自動的。

我認為您應該針對您的方法考慮以下幾點:

  • 您不知道專業的項目維護人員將如何更改源代碼。 因此,盡管您將能夠使用rebase來應用大多數更新,但是在某些時候,您最終將面臨一個沖突,您必須手動重新解決。
  • 該第三方庫可能不會經常更改。 即使這樣做,也並不意味着您必須立即更新依賴關系。 做什么的? 該庫可能會有很多更新,這些更新無論如何都不會影響您的代碼。 那么,為什么要打擾呢?

我的意見是,這類問題無論如何都不應自動解決,因為這種情況很少發生,並且無論如何都需要您的手動干預。 也就是說,與每半年進行一次手動重建相比,您將花費更多的時間來嘗試實現自動化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM