为什么要细分为内部项目的maven模块?

时间:2008-12-16 17:58:08

标签: java maven-2

我们的项目中有关于maven模块粒度的不断讨论。我们已经同意框架(如spring)和内部应用程序的需求可能存在差异,这些应用程序总是单片部署。

我们也同意将适配器的实现细节隐藏到单独的API模块后面的外部系统是相当明智的,因此实现类不会渗透到主要实现的类路径中。 如 但那就是我们走的路。这是一个Web项目,因此我们有“web”,“core”和“adapter(s)”等模块。我们有多个后端,但我们不需要插件。

您在maven模块化中使用什么标准?您为Web项目制作了哪些模块?

1 个答案:

答案 0 :(得分:4)

在我看来,即使对于“只有一个webapp”,项目部门也应该非常精细。

我会为数据访问层接口和实现,业务层接口和实现以及webapp本身制作单独的项目。我还将制作至少一个“公共”项目,用于包含与多个其他项目相关的代码。但这只是一个开始。我会毫不犹豫地为与实用程序类相关的commons-util项目提取,而不管正在开发的应用程序(字符串,日期,反射等)。我还会在进行测试(公共测试)时为有用的实用程序创建一个项目。这只是下一步......;)

如果我编写了与hibernate相关的一般有用的代码,我会把它放在一个hibernate-utils项目中。有用的Spring实用程序将放在spring-utils项目等中。当这样做时,许多项目将只包含一个或几个包,并且包通常包含很少的类。

我这样做的理由是,它可以帮助我思考我编写的代码。这是真正的业务逻辑,还是一般的字符串操作,日期操作,Hibernate特定的逻辑等?我的层变得更清晰,并且在包和项目之间获得循环依赖变得更加困难(我们不希望这些)。此外,在其他项目中重用代码变得更加容易。总会有其他项目...

我还发现,新开发人员更容易掌握结构,因为项目变得更小,更易于管理;当你觉得自己没有必要时,开始编码会更容易。

作为细粒度方法的最后一个优势,构建时间减少,因为您不必每次都构建所有内容。