1、背景
在分布式架构中,一个系统的业务会划分成多个模块实现。如商城系统的商品服务和仓储服务分别由商品模块和仓储模块实现,我们将这些模块成为业务模块。一个模块也即一个工程项目,我们需要对这些模块所需公共依赖和公共类进行同一管理,好处如下:
1、简化配置过程:进行一次配置就可以让全部项目都引入这些依赖
2、避免版本冲突:所有模块的相同依赖使用同一版本,避免冲突
3、便于维护,多个业务模块可能会共享一些通用类,如用于返回json数据的类,如果每个业务工程都维护这样一些类,维护成本大大增加。因此我们可以将这些通用类放在一个通用工程中维护,让业务工程通过引入这个通用工程,就可以获取到这些类了。
2、方法
采用父工程聚合业务子模块和通用子模块进行管理
3、步骤
1、创建一个父工程,让子模块用<parent></parent>标签引入该工程
首先是父工程的配置,重点在于packing标签,需要声明为pom
其次是子工程的配置,使用<parent></parent>声明父工程
2、创建一个maven工程作为通用工程,用于维护通用类和引入依赖
说明:
1、对于业务模块所需的公共类,如果直接在父工程下创建它们,会使父工程显得臃肿,整个项目的结构也不清晰。因此,我们创建一个通用工程来管理这些通用类,并将业务模块所需公共依赖引入到该通用工程的pom文件中。这样只需要在业务模块只需引入该通用工程作为依赖就可以使用这些依赖和类了
2、父模块则使用<properties>标签对整个项目中的依赖进行版本控制
创建的通用工程部分配置
业务模块引入通用工程
3、在父工程中聚合所有子工程(通用工程和业务工程)
这一步的主要目的是对mvn操作进行简化,在聚合工程当中执行mvn操作时会对所有module中声明的模块生效,mvn操作如下:
4、父工程进行版本管理