代码生成之后,手动修改了后,再次生成时怎么办?覆盖当然不行,不覆盖也不行,这时就涉及到代码合并的问题。
代码的merge算法是相当复杂的,我粗略的想了一下,就有不少的技术难点。merge的思路基本上分为两个:1、基于文本文件的合并;2、基于java类结构的合并。
其实类似svn的merge方法挺好的,如果没有冲突的话直接合并,如果有冲突,标记之。
网上找了一下,好像没有很好的开源实现,有一个JMerge,源代码拿下来看了看,只是一个文件比较算法,而不是合并算法;另外有一个JMerger (多一个R)是基于eclipse的,好像很难在eclipse之外使用。如果做基于eclipse的代码生成,可以考虑使用JMerger。