2012-07-30 65 views

回答

3

@Esko Luontola

分裂的答案,如果 模块需要单独部署,该项目分成多个模块是有用的,例如..

可能被误解。如果你有单独部署的模块,则完全相反。在这种情况下,你不应该创建一个多模块版本。这应该通过简单的单独的maven项目来完成。

多模块构建的想法是,如果你有像耳朵项目一样属于一个模块,通常包括其他几个如客户端,服务器,ejb,战争等。这通常是通过一个多模块这意味着所有模块具有相同的版本号,但可以分别访问和使用。

1

将项目拆分为多个模块非常有用,例如,如果模块需要单独部署,或者在库的情况下,某些项目的消费者只需要一部分类,或者库的开发人员想要明确区分什么是公共API和什么是私有实现。对于大型项目,它可能会使代码更容易保持顺序,即使代码在技术上可能都在同一模块中。

1

有一些更多的用例中,我会建议使用多模块Maven项目:

  1. 你的模块共享相同的依赖关系,在这种情况下,你会指定主POM所有的依赖,以及所有的模块都可以享受它。 (不需要为每个模块指定相同的依赖关系。)

  2. 如果您需要在多个项目上一起执行操作。我用我的所有项目创建了一个包,并将它发送给客户,所以我使用主要的pom构建它们,并使用其他maven插件将它们打包为zip文件。

3

看来这个问题更多的是关于一般软件。 Maven只是这样做的一种方式。

我会qoute从"Continuous Delivery", by Jez Humble

什么是组件的几行?这是一个软件中可怕的超载术语, ,所以我们会尽量让它尽可能清楚我们的意思。 当我们谈论组件时,我们的意思是一个合理的大规模代码 结构在一个应用程序中,有一个定义良好的API,可能会被替换为另一个实现 。 A 基于组件的软件系统的特征在于,将代码块分成离散片段,其通过与其他组件定义明确且有限的交互来提供行为。基于组件的系统的对立面是单体系统,没有明确的边界或负责不同任务的元素之间的关注分离。单片系统通常具有较差的封装,并且在逻辑上独立的结构之间的紧密耦合打破了德米特定律。

...

采用基于组件的设计通常被描述为鼓励 重用和良好结构特性如松散耦合。这是 是真实的,但它也有另一个重要的好处:它是 大型开发团队合作的最有效方法之一。

...

许多项目都是罚款单版本控制库和 简单的部署管道。然而,许多项目已经演变为一个难以维系的代码沼泽,因为没有人做出决定以便创建离散组件,因为这样做很便宜。在 点哪些小项目变成大项目是流畅的,并会潜入你的 。

...

最后,值得注意的Conway的法律,其中规定 “的组织,其设计系统。 。 。被限制为产生 设计,这些设计是这些组织的通信结构的副本。“4因此,例如,开发人员通过电子邮件进行通信的开放源代码项目往往是非常模块化的,只有很少的接口。由小型团队开发的产品将倾向于 紧密耦合而不是模块化。小心你如何设置你的开发团队 - 它会影响你的 应用程序的架构。

我发现这个最后的声明是多么清晰准确。 我强烈推荐这本书! :-)

相关问题