项目怎么实现“模块化”部署?

比如一个系统包括“人员管理”,“设备管理”,“订单管理”,“库存管理”等内容,实际的项目可能不需要所有的功能,只需要其中一部分。

现在所有代码都写在一起了,所有的表都在一个库里面,如果不需要某些功能 就是修改页面,把相关的链接去掉,页面上没了但是后台代码和数据库还有。

如果想实现“模块化”部署,应该怎么重构,重构的思路什么?

如果仅仅是模块化部署,使用maven足够了
将各个子系统拆分成不同的项目, 使用maven在部署时将各个子系统打成jar包形式

如果不需要某个系统,只需要修改pom.xml文件即可。

如果要实现物理上模块化就要采用osgi和远程通信技术了。不过我感觉你的系统不需要这些东西。。。不是什么高并发大访问量的互联网产品,使用maven就足够了

代码重构就涉及应用拆分, 将不同的业务单元拆分成各个不同的项目,然后用ant或者maven构建在一起。 好处是当系统越来越庞大,将大系统拆分可以降低维护成本,不同的开发人员可以关注不同的工程代码。

其实就是增量的文件覆盖到原来的文件里,

我感觉这跟构件开发的思路是一样的吧,对于java web方面来说应该把一个模块的类库封装在一起打成jar包,视图的东西就不好分清了,只能是用户权限那块将资源控制到页面级应该可以解决,但是东西还是那么多,另外可以考虑多做几套根据实际使用。你这个问题很好,继续跟踪你的话题。

提供一个简单的思路,分两部分:

[b]1、代码[/b]
可以借鉴Eclipse的RCP插件机制,将模块代码(java,jsp,properties,配置文件等)分离,比如:
WEB-INF\plugin\base\
WEB-INF\plugin\blog\
WEB-INF\plugin\cms\
WEB-INF\plugin\space\
......
在每个模块下自定义plugin.xml文件来实现模块的配置加载。

如果用到struts1可以参考我回答的这个问题:[url=http://www.iteye.com/problems/85161]http://www.iteye.com/problems/85161[/url]

[b]2、数据库[/b]
同上,将每个模块的DDL放到各自目录下
比如:
安装模块(CREATE TABLE) plugin\cms\install\database.sql
卸载模块(DROP TABLE) plugin\cms\uninstall\database.sql

基础数据库放入共通之下。

大体目录结构如下:

─WEB-INF
└─plugin
├─base
│ │ plugin.xml
│ │
│ ├─config
│ ├─install
│ │ database.sql
│ │
│ ├─jsp
│ ├─src
│ └─uninstall
│ database.sql

├─blog
│ │ plugin.xml
│ │
│ ├─config
│ ├─install
│ │ database.sql
│ │
│ ├─jsp
│ ├─src
│ └─uninstall
│ database.sql

├─cms
└─space

通过OSGi动态技术,将需要的模块动态加载,其他模块不提供,数据库的对应脚本写在各自模块中。另外,还能动态加载新的模块,实现升级、卸载自动化。

把一个个模块作为jar打包进去可不可行。

代码,页面和数据库脚本按照每个模块所属编写到所属文件夹下,每个模块用独立的ant脚本来编译,需要哪个模块的时候就编译哪个模块

这个问题我一直也在考虑,但是一直没有合适的解决办法,servlet3.0 碎片化配置或许能好些,我给你提供一个思路,把每个模块当作一个项目来开发,其他还真没想到好的办法和替代技术!!

碰到和楼主相似的问题 我现在针对不同的用户使用不同模块
所有的代码和数据库也是统一部署的

可以用 maven管理 osgi组件式。

也可以参考 spring的插件方式。实现spring的接口,让spring的反射技术来加载你的组件

模块soa化部署 公用的部分可以搞成通用组建引入,插件的形式配置功能名称及链接

项目代码首先要分开来,其他都好办了