当前标签: 架构设计 C6 架构系列——Maven多模块划分和结构2014-08-23 17:57:51 请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)一、传统Java Web项目# 传统Java Web项目 这类项目常见组织方式就是在一个项目里面,放置 src\[java文件] resources\[配置文件] webapp\[js/jsp/css/jpg/xml等] 其中src下的java代码,常见包结构如下: com.company.core com.company.core.controller com.company.core.dao com.company.core.service com.company.user com.company.system com.company.order 等。 虽然看上去,也划分了核心模块(即底层模块)、功能模块等,但随着开发的推进,包之间的代码 就会出现交叉依赖的情况,比如user依赖core、system、order,而order也依赖user包。 由于所有代码都是在一个项目里面,调用是很容易和随意,如果通过项目管理方式来强制要求依赖 方式,则管理难度很高,需要反复复查代码。所以最后导致整个各个包之间是低内聚高耦合。 另外,由于所有代码都在一个项目里面,所以随着代码的不断增加,当修改一个类时,也会导致整个 项目重新编译,开发效率低下。 为了避免出现这些情况,C6软件架构采用了Mavan的多模块划分方式进行管理。C6 架构系列——Maven多模块划分和结构 二、C6的Maven多模块管理 整个项目结构如下图: 整个项目采用Maven的最佳实践 —— 划分多模块方式来管理。 规划了三个顶层的项目:
(图片中的Servers只是部署Tomcat时生成的文件夹,不是开发项目) 三、craft6-base-root项目的Maven Pom.xml依赖设计这个项目下面包括多个子模块,每个子模块分别实现专门的功能,保证了高内聚,低耦合的设计要求。 模块之间的依赖大多基于接口和抽象类的方式,通过Maven的dependency依赖配置完成。 该项目包含三个maven层次,每层有一个pom.xml文件,如下图:
四、craft6-platform 平台项目平台项目是一个独立项目,有自身的pom.xml,但依赖craft6-base-root的base-web模块, 该base-web模块是craft6-base-root最外层的模块,依赖其它所有模块,供web项目使用。 集成了Spring MVC + FreeMarker + Spring Security + ActiveMQ等开源技术。 这样相当于要开发一个web项目时,只需要新建一个项目,然后在maven中依赖base-web模块 即可获得所有底层的支持,无需重新配置和管理第三方的依赖(比如对Spring的依赖)。 craft6-platform的pom.xml截图如下: 可以看到该项目需要引入的第三方包是很少的,因为大部分的包已经由base-web依赖引用, 并且配置好了。 ![]() 1 C6 架构系列——架构设计思想和分层 2 C6 架构系列——Maven多模块划分和结构 3 C6 架构系列——MVC模式和领域驱动设计(DDD)的结合 4 C6 架构系列——Maven模块划分和依赖设计 5 《大型网站技术架构》读书笔记 6 REST和RESTFul Web Service学习知识整理 7 C6 架构重构,针对高并发、高可用和多前端 8 C6架构重构 - service-cache模块(基于Simple-Spring-Memcached) 9 C6架构重构 - service-search模块 一(Lucene基础技术探讨) 10 Java B2C商城系统(2009版)介绍 分享到: 为您推荐这些文章,如果感兴趣,请继续阅读吧:C6 架构系列——Maven多模块划分和结构Maven,Maven项目,Maven架构,Maven多模块,Maven多模块划分,Maven依赖,C6软件架构,DDD,领域驱动设计,开发框架,开发架构,软件架构,四层架构,Java架构,Java Web架构,轻量级架构,多层架构,MVC,框架设计,架构设计,平台软件架构传统的Java Web项目常见组织方式就是在一个项目里面,放置 src\[java文件] resources\[配置文件] webapp\[js/jsp/css/jpg/xml等] 虽然看上去,也划分了核心模块(即底层模块)、功能模块等,但随着开发的推进,包之间的代码就会出现交叉依赖的情况,比如user依赖core、system、order,而order也依赖user包。由于所有代码都是在一个项目里面,调用是很容易和随意,如果通过项目管理方式来强制要求依赖方式,则管理难度很高,需要反复复查代码。所以最后导致整个各个包之间是低内聚高耦合。 另外,由于所有代码都在一个项目里面,所以随着代码的不断增加,当修改一个类时,也会导致整个项目重新编译,开发效率低下。 为了避免出现这些情况,C6软件架构采用了Mavan的多模块划分方式进行管理。 |
粤ICP备14060523号 Copyright @2014 -唯心六艺软件 |