到目前为止我们花了大量时间在一些不是和Maven直接相关的话题上。这么做是为了演示一些完整的并且有意义的样例项目,以能让你用来帮助实现你的现实系统。我们并没有走任何捷径来快速生成完好的结果,也没有使用Ruby on Rails式样的东西让你感到惊讶目眩,说你可以在“简单的10分钟内!”创建并完成一个Java企业级应用。市场上这样的东西太多了,有太多的人试图卖给你最简单的框架,又只需要你投入零的时间关注。本章我们想要做的是展现给你整个的画面,整个多模块构建的生态系统。这里我们展现的Maven处于一个你能经常看到的自然应用的上下文中——不是快餐式的,10分钟的简单介绍,往Apache Ant扔烂泥,说服你采用Apache Maven。
如果你离开本章,想知道它到底和Maven有什么关系,那么我们就成功了。我们演示了一个复杂的项目集合,使用了流行的框架,并且使用声明式构建将它们绑在了一起。事实上本章60%以上的内容是在解释Spring和Hibernate,而大部分时间,Maven暂时离开了。这样是可行的。它让你集中注意力于应用本身,而非构建过程。我们专门的来讨论那些在这个人造项目中用到的技术,而不是花时间讨论Maven,以及那些为了“构建一个集成了Spring和Hibernate的构建”你必须做的工作。如果你开始使用Maven,并且花时间学习它,你肯定会开始获益,因为你不需要花时间去编写一些程式化的构建脚本。你不用再花时间去考虑构建中那些平常的方面。
你可以使用本章介绍的骨架项目作为你自己项目的基础,这么做的机会是,你会发现,你会根据需要创建越来越多的模块。例如,基于本章样例的项目可能有两个单独的模型模块,两个持久化模块以将数据持久化到不同数据库,一些web应用,以及一个Java手机应用。总的来说,这个现实系统包含了15个相关的模块。重点是,你已经看到了本书中最复杂的多模块样例,但你应该知道该样例也仅仅触及了所有Maven可能性的表面。
本章展现了一个多模块项目,该项目比Chapter 6, 一个多模块项目中展示的简单样例复杂得多,然而它也只是现实项目的一个简化。在大型项目中,你可能发现你正构建一个如Figure 7.5, “编写接口项目程序”的系统。
当我们使用术语接口项目的时候,我们是指一个只包含了接口和常量的Maven项目。在Figure 7.5, “编写接口项目程序”中,接口项目是persist-api
和parse-api
。如果big-command
和big-webapp
针对于persist-api
中定义的接口编写,那么它就能很容易的切换到另一种持久化类库的实现。该图显示了两个persist-api
项目的实现,一个将数据存储于XML数据库,另一个将数据存储于关系数据库。如果你使用本章中的一些概念,你就能看到如何仅仅通过传入一个标记,让程序换入一个不同的Spring
application context
XML文件,换出持久化实现的数据源。就像应用程序本身的OO设计一样,通常将接口Maven项目从实现Maven项目中分离是一种很明智的做法。