假設我有一個依賴於某個庫的開源項目,必須對其進行修補以修復一些問題。我怎麼做?我的想法是:maven項目的佈局,具有修補的依賴關係
- 將該庫源設置爲模塊,將它們保存在我的vcs中。優點:簡單。缺點:我的回購中有些第三方來源可能會減慢構建過程,很難找到修補位置(雖然可以在自述文件中修復)
- 有一個模塊,就像1一樣,但只保留修補過的源文件,編譯它們在類路徑中使用orignal庫jar,並以某種方式替換build中的庫jar中的* .class文件。優點:構建速度更快,易於查找修補位置。缺點:很難配置,那個jar hackery是不明顯的(庫中的庫jar和我的項目組件中會有所不同)
- 在主/資源中保存修補* .class文件,並在包裝中替換,如2)。優點:幾乎沒有。缺點:vcs中的二進制文件很難重新編譯修補類,因爲修補程序編譯不是自動的。
一個不錯的解決方案是創建一個獨立的項目與補丁庫源,並部署在具有-patched限定符的本地/企業存儲庫。但是這並不適合開源項目,任何人都可以輕鬆構建出源代碼。或者我應該說「還有,在你構建我的項目之前,請檢查一下這些東西並運行mvn install」。
+1 Nice additional notes – 2010-04-12 21:43:00