背景:
在软件开发过程中,我们会使用到很多开源的框架,但是有的时候我们使用的开源框架的某些部分不符合我们的需求,就需要修改源码。
方案:
把需要修改的类拷贝到项目中(路径要保持一样)进行修改,项目继续依赖原框架。
把项目从githup clone到本地,进行修改,修改完毕后,发布到内部的maven私服中,进行使用。
优缺点:
方案一:
优点:比较容易看到修改了哪些源码,而且仍然依赖原框架,可以灵活升级版本
缺点:由于仍然依赖原框架,会导致项目中包含重复的类,具体是修改后的源码生效还是框架中的源码生效比较依赖于java的类加载策略。
方案二:
优点: 可以直接引用,不会存在重复的类。
缺点:随着时间增长,源码管理难度提升,可能都会忘记了改过哪些东西,并且版本升级也不方便。
类加载策略:
项目中包含和依赖同名同路径的类,会优先在家项目中的类。
项目依赖包中,有同名同路径的类,会根据maven的依赖机制进行加载。