Maven2的新项目

时间:2010-09-05 06:28:29

标签: eclipse maven-2

将Maven用于未来可能会变大的项目的推荐方法是什么? 我使用Eclipse,我看到了不同的方法。一些项目使用没有子模块的项目,例如一些像mahout,有不同的子项目用于不同的模块(例如,核心,数学,示例等)。你可以在这个链接中看到它: http://svn.apache.org/repos/asf/mahout/trunk/

是否有任何优势比较优先?

感谢。

3 个答案:

答案 0 :(得分:5)

将项目拆分为模块的决定应该由您希望设计和维护应用程序的方式决定。无论您选择创建多模块项目,还是将所有内容整合在一个模块中,Maven本身都能正常运行。那么问题就变成了,将应用程序拆分成多个模块的优点/缺点是什么。

分割应用的一些驱动程序纯粹是技术性的:

  • 生成单独的客户端和服务器工件
  • 生成命令行版本和Web应用程序版本
  • 模块依赖关系

在其他情况下,更多与设计相关的问题会促使您拆分应用程序。如果您关注的是随时间推移而增长的应用程序,这一点尤为重要。在这些情况下,您希望将应用程序分离到特定的关注区域,并定义模块交互的服务边界。这允许您随着时间的推移演化单个模块,同时最小化对应用程序其余部分的影响。

请注意,maven特别适用于大型多模块项目,因为它为依赖项管理和解析提供了支持。

答案 1 :(得分:2)

模块实际上是Maven的核心概念(并得到很好的支持),模块化构建的明显优势是......模块化。

优点:

  • 可以更好地分离顾虑。
  • 促进,强制执行代码的模块化设计。
  • 让您对每个部分“适用”的内容进行更精细的控制。
  • 允许在与其他部分隔离的情况下处理代码的子部分。
    • 使用二进制依赖关系加速编译(与编译整个整体项目相比)。
  • 允许用户仅依赖应用程序的子部分。

缺点:

  • 如果不需要,多个模块会比整体项目产生更多维护。

因此,Maven支持并推广模块化构建,这是设计的一部分。 在某些情况下,你实际上甚至没有选择,因为每个模块的一个(主要)工件黄金法则:如果你想将应用程序分配为不同的部分,或者组装几个部分如果应用程序(例如客户端JAR和服务器JAR,或WAR中的JAR,或EAR中的某些EJB-JAR和WAR),您必须为它们创建专用模块(Maven可以'从同一个模块产生一个WAR 一个EAR。

总而言之,构建的模块化在某种程度上是由应用程序的性质驱动的,可能只是需要它。但是,如果您的应用程序本质上不是模块化的(比如开发一个swing客户端),那么可以使用单个模块。当事情变得太复杂,太大时,根据需要划分它。

答案 2 :(得分:0)

建议使用模块,通常在大型项目中,您在Maven处理的模块之间具有相关性。另一方面,相关部分彼此相关,因此反应堆构建是一种好方法,当然Maven的发布系统为您提供了很多东西来支持您的项目(分支等)。