将原始模块按照功能拆分成若干个子模块,方便模块间相互调用,接口共享
这里以之前开发的SpringMVC_ssm中的domain模块为例
父项改为none,文件存储位置需要做出相应调整
这里以Book为例
安装到本次仓库后就可以在需要引用该模块的模块中导入对应的坐标了
依赖指当前项目运行所需的jar包,一个项目可以设置多个依赖
依赖具有传递性
直接依赖:在当前项目中通过以来配置建立的依赖关系
间接依赖:被资源依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
路径优先:当依赖中出现相同的资源时,层积越深,优先级越低,层级越浅,优先级越高
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖指对外隐藏当前所依赖的资源--不透明
例如,我们在ssm中引用了maven_pojo的依赖,但我们不想向外界展示pojo,我们就可以通过在坐标内加入
com.cacb
maven_pojo
1.0-SNAPSHOT
false >
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本--不需要
例如,我们在另一个模块中导入了ssm的依赖坐标,但我们不需要pojo模块,就可以通过给ssm坐标增加
4.0.0
com.cacb
maven_others
1.0-SNAPSHOT
war
com.cacb
maven_ssm
1.0-SNAPSHOT
com.cacb
maven_pojo
聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
聚合工程:通常是一个不具有业务功能的"空"的工程(有且仅有一个pom文件)
作用:使聚合工程可以将多个工程编组,,通过对聚合工程进行构建,实现对所有包含的模块进行同步构建
当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
org.example
maven_parent
1.0-SNAPSHOT
pom
../maven_ssm
../maven_pojo
概念:继承描述的是两个工程间的关系,与java中类的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用:
简化配置
减少版本冲突
继承通常与聚合工程共同实现,所以依然使用上例中使用的maven_parent为例
org.example
maven_parent
1.0-SNAPSHOT
pom
如,在本例中就是在maven_parent.xml中导坐标
rog.springframework
spring-webmvc
5.2.10.RELREASE
例如,配置maven_pojo为可选依赖关系,就应该在maven_parent中进行如下书写
com.cacb
maven_pojo
1.0-SNAPSHOT
org.example
maven_parent
1.0-SNAPSHOT
../maven_parent/pom.xml
例如,要在ssm中引用pojo依赖,就应该在ssmxml中进行如下书写
com.cacb
maven_pojo
注
子工程中使用父工程中的可选依赖时,仅需要提供群组id和项目id,无需提供版本,版本由父工程统一提供,避免版本冲突
子工程还可以定义父工程中没有定义的依赖关系
作用
聚合用于快速构建项目
继承用于快速配置
相同点
聚合与集成的pomxml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的模块内容
不同点
聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
继承是在子模块中配置关系,夫模块无法感知那些子模块继承了自己