如何在java里面实现类似条件编译?

aleung 2003-07-03 05:38:28
java不象C语言那样有预处理指令,无法进行条件编译,但有没有什么办法可以达到根据条件来选择编译的功能呢?利用ant来实现也可以。

我遇到的问题是这样的:

开发的软件卖给不同客户的时候就要根据客户的需求做一些改动,造成原代码有好多版本。例如某个方法里面有少量的代码不同,或者是整个类都不一样(放在不同文件)。

例如,我的软件有A、B、C三个feature, 客户leo对A提出了特殊要求, 于是实现了A.leo,客户sam对B提出特殊要求,于是实现了B.sam,然后我们改进了C,成为C.new。
现在,提供给leo的软件应该具备的feature是 A.leo, B, C.new;
现在,提供给sam的软件应该具备的feature是 A, B.sam, C.new;
实际情况往往比这复杂得多:(

如果是用C/C++语言,我可以通过条件编译选项,在build的时候指定编译成某个版本,或者是通过makefile选择编译某个文件(当同一个类不同版本放在不同文件中的时候)。

现在用java,我是用先把特定版本的文件copy到src目录树再编译这样的笨办法,这样代码管理很混乱,也不能自动化,有什么好方法吗?
...全文
281 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyicecream 2003-07-04
  • 打赏
  • 举报
回复
这也是做分析时的难点,站在顾客的角度考虑更高一个层面的需求,谁叫顾客是上帝。。。
aleung 2003-07-04
  • 打赏
  • 举报
回复
不太明白为什么是设计模式的问题。
我所在的是做项目的公司,而不是做产品的,必须为不同客户定制不同的软件。

我也认为是SCM的范畴,但想不到好的解决办法。
是否有可能结合ant的脚本来解决呢?
wolfsquare 2003-07-03
  • 打赏
  • 举报
回复
这个应该是版本控制问题了,属SCM工作范畴.
基本上我们碰到这种情况会单独为该客户生成一整套代码.
然后想办法将该特性合并到主版本中.

说起来和设计也有关系.
hy_bug 2003-07-03
  • 打赏
  • 举报
回复
我觉得这是设计模式的问题,而不仅仅是和语言有关。
不过java你可以有类似条件编译。
具体记不清楚了,好像在thinking in java 2nd edition里见过。
其实也没什么特别的语法,只是用了一些小技巧。
只是那么大一本书,我一时也找不到在哪儿。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧