假设我有一个依赖于某个库的开源项目,必须对其进行修补以修复一些问题。我怎么做?我的想法是: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