在我们的项目中,我们对maven模块的粒度进行了持续的讨论。我们已经达成共识,框架(如spring)和内部应用程序的需求可能存在差异,这些应用程序总是整体部署的。
我们还同意,将适配器的实现细节隐藏在单独的API模块后面是非常明智的,这样实现类就不会流入主实现的类路径中。但这就是我们要做的。这是一个web项目,所以我们有像"web","core“和"adapter(s)”这样的模块。我们有多个后端,但我们不需要可插入性。
在maven中,你使用什么标准来进行模块化?您为web项目制作了哪些模块?
发布于 2008-12-16 18:42:31
在我看来,项目部门应该是非常细粒度的,即使是“只有一个webapp”。
我将为数据访问层接口和实现、业务层接口和实现以及webapp本身创建单独的项目。我还会创建至少一个"commons“项目,用于包含与多个其他项目相关的代码。但这只是个开始。我会毫不犹豫地为相关的实用程序类提取commons-util项目,而不考虑正在开发的应用程序(字符串、日期、反射等)。在进行测试时,我还会为有用的实用程序创建一个项目(commons-test)。这就是下一步... ;)
如果我编写了与hibernate相关的一般有用的代码,我会将其放在hibernate-utils项目中。有用的Spring工具可以放在spring-utils项目中,等等。当这样做时,许多项目将只包含一个或几个包,这些包通常会包含几个类。
我这样做的理由是,它可以帮助我思考我写的代码。这是真正的业务逻辑,还是通用的字符串操作、日期操作、Hibernate特定逻辑等?我的层变得更干净了,包和项目之间的循环依赖变得更难了(我们不想要这些)。此外,在其他项目中重用代码变得更加容易。总会有其他的项目...
我还发现,对于新的开发人员来说,更容易掌握这种结构,因为项目变得更小,更容易管理;当您觉得不必理解所有事情时,开始编码也更容易。
作为细粒度方法的最后一个优点,构建时间减少了,因为您不必每次都构建所有内容。
https://stackoverflow.com/questions/372119
复制相似问题