我正在开发一个大型遗留代码库,目前只能使用 java 1.4 编译。我需要做的一件事是让它与 1.6(现在可能是 1.7)一起工作。
头部构建当前不使用 1.6 编译。这有很多原因 - 大多数都很容易修复,比如enum
用作关键字,但我们正在努力与 Oracle/Sun 更新 JDBC(连接接口)以支持 java 1.4 中不可用的类型。这意味着,如果我对 1.6 进行更改,主要生产构建会中断为像NClob
break 这样的类,因为它们不在 1.4 版本中;如果我不进行更改,我将无法使用 1.6 编译器进行编译。
是否有任何模式支持 Java 中的条件编译/构建?到目前为止,我提出的唯一计划是摆弄 ant 构建,以根据构建有条件地换入/换出类。这感觉非常可怕,因此向这里的社区询问想法。
同样,问题的边界是:
- 需要能够
HEAD
在 1.4 上继续编译(恐怕没有 1.6 与 1.4 兼容模式) - 还需要一个单独的使用 1.6 编译的头部构建 - 假设这将需要一些时间(因为它是一个大型代码库),因此在我们准备头部构建时允许其他人继续工作并提供其他更改的第一个要点1.6 兼容性。
- 这是一棵巨大的代码树;这意味着我们的代码都不是库依赖,而且我们不能轻易做到这一点(记住:遗留代码库
:(
) - 我们不允许分支(原因是我不会进入,除非我真的必须这样做)
提前谢谢了。
- 对于那些对我们为什么需要这样做感到好奇的人,我们的情况与此有些相似:Mixing Java 1.4 and 1.6 bytecode in a class hierarchy