模块管理

    对于Maven工程来说,原来是一个大项目:

    现在可以分拆成3个模块:

    Maven可以有效地管理多个模块,我们只需要把每个模块当作一个独立的Maven项目,它们有各自独立的pom.xml。例如,模块A的pom.xml:

    模块B的pom.xml:

    注意到parent的packaging是pom而不是jar,因为parent本身不含任何java代码。编写parent的pom.xml只是为了在各个模块中减少重复的配置。现在我们的整个工程结构如下:

    如果模块A依赖模块B,则模块A需要模块B的jar包才能正常编译:

    中央仓库

    其实我们使用的大多数第三方模块都是这个用法,例如,我们使用commons logging、log4j这些第三方模块,就是第三方模块的开发者自己把编译好的jar包发布到maven的中央仓库中。

    本地仓库

    但是我们不推荐把自己的模块安装到maven的本地仓库,因为每次修改模块b的源码,都需要重新安装,容易出现版本不一致的情况

    推荐的做法是模块化编译,在编译的时候,告诉maven几个模块之间存在依赖关系,需要一块编译,maven就会自动按依赖顺序编译这些模块

    Maven支持模块化管理,可以把一个大项目拆成几个模块可以通过继承在parent的pom.xml统一定义重复配置可以通过编译多个模块