项目工程拆分原则? 功能分层拆分、业务功能拆分?下面一个电商项目(Jmall)为例: 功能分层拆分 按照项目功能分层,分为common(java工程)、dao(java工程)、service(java工程)、web(web工程)等 业务功能拆分 按照业务拆分,分为common工程(java工程)、用户中心user(web工程)、商品中心goods(web工程)、订单中心order(web工程)、总web(web工程) 总结对比: 随着业务复杂的增加、按照功能分层的拆分,每个工程会越来越繁重,务必会达到瓶颈。但是按照业务功能的划分,每个模块功能都是一个完整的web功能可以独立运行、开发、协作,同时又能合并成一个总的web的工程,使其组成一个平台,随着业务增加,可以重新拆分新的工程,更好的适应业务整合。推荐按照业务功能进行拆分 本人不善言辞,觉得我说的不对,可以参考其他优秀的项目,例如spring业务按找业务功能进行拆分,如下图: 下面就开始以Jmall为例子按照业务划分的原则,开始搭建maven多工程项目 首先创建一个父工程jmall(pom),用于管理 接下来创建common工程(java工程) 接下来构建user工程(web工程) 依此类推,构建好其他工程,如下图所示: 其中需要注意的是jmall-web工程是用于其他工程合并成总工程的项目 构建好工程之后,首先Install一下,看是否成功: 测试jmall-common的依赖 在jmall-common中新建一个BaseTest的基类,如下图: 在jmall-user工程调用BaseTest,如下图: 首先需要添加jmall-common工程的依赖: 调用如下: 执行结果如下: 合并总的web工程 合并为一个总的web工程,需要借助maven-war-plugin的插件,如下图所示: 需要添加工程依赖,如下图: jmall-web完整的pom.xml,如下: <?xml version='1.0'?> xsi:schemaLocation='http://maven./POM/4.0.0 http://maven./xsd/maven-4.0.0.xsd' xmlns='http://maven./POM/4.0.0' xmlns:xsi='http://www./2001/XMLSchema-instance'> 4.0.0 org.zhanghua jmall 0.0.1-SNAPSHOT org.zhanghua jmall-web 0.0.1-SNAPSHOT war jmall-web Maven Webapp http://maven. org.zhanghua jmall-user 0.0.1-SNAPSHOT war org.zhanghua jmall-goods 0.0.1-SNAPSHOT war org.zhanghua jmall-order 0.0.1-SNAPSHOT war junit junit 3.8.1 test jmall-web org.apache.maven.plugins maven-war-plugin 2.6 org.zhanghua jmall-user org.zhanghua jmall-goods org.zhanghua jmall-order org.mortbay.jetty jetty-maven-plugin 7.6.15.v20140411 9080 / org.mortbay.util.URI.charset UTF-8 接下来,我们执行install,看jmall-web的war是否已经把jmall-user,jmall-user,jmall-goods,jmall-order工程合并进来了,如下图: 如上图所示,合并正确,符合我们的要求. 注意到index.jsp只有一个了,我们每个工程里面都会有index.jsp,但是最后只有一个了,是因为我们jmall-web工程里面有index,会这个jmall-web的为准。 总结:如果多个war相同路径且同名的文件,如果总的web工程里面有,那么总的这个会覆盖分支的,如果总的没有,那么看合并的顺序,保留第一个顺序的文件。 最后通过jetty:run运行成功,如下图: 代码地址:http://git.oschina.net/auhgnahz/jmall |
|
来自: liang1234_ > 《maven》