Maven 多模块(聚合)
Maven 继承和聚合是 2 个独立的概念。工程与工程之间可能毫无关系,也可能是继承关系,也可能是聚合关系,也可能既是继承又是聚合关系。继承和聚合可以同时出现,但并不是必须同时出现。
-
Maven 继承(父子工程)的目的为了配置文件的复用和配置信息的统一管理;
-
Maven 聚合(多模块工程)目的是项目功能上的拆分和批量执行 mvn 命令;
[!] 例如
在 log4j1 时代,log4j 项目的「产出成果」只有一个log4j.jar
包。到了 log4j2 时代,log4j 项目的「产出成果」就变成了两个包:log4j-api
和log4j-core
。很明显,就是两部分相对独立的代码分别打成了两个包,而并不像以前那样打成一个包。
由于 Maven 多模块项目是父子项目的一种高级形式,因此,多模块项目也是有一个父模块包含一个或多个子模块,不过有几点不同:
- 不同点 1:模块和模块的位置不同。
多模块项目中,子项目通常是在父项目「里面」的;而多模块项目中,普通项目和聚合项目通常是「平级」的。
- 不同点 2:pom.xml 中内容不同。
多模块项目中,父项目中会『多出来』一个 <modules> 元素。
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<packaging>pom</packaging>
<modules>
<module>child1-module</module>
<module>child2-module</module>
<module>...</module>
<module>...</module>
<module>...</module>
</modules>
...
</project>
非父子关系的多模块项目
其实多模块项目可以不必是父子项目。
这种情况下:
-
原来的父项目中仍有 <modules> 元素,用来囊括子项目。
-
原来的子项目中不再有 <parent> 元素。或者 <parent> 元素指向另外的项目,不再是原来的父项目。
这样一来,这些项目和项目之间就「不再是父子」项目关系,因此,自然就不能继承配置了。文章来源:https://www.toymoban.com/news/detail-700677.html
不过,另一个功能在这种情况下倒是保留下来了:批量执行 maven 命令 。文章来源地址https://www.toymoban.com/news/detail-700677.html
到了这里,关于Mavan进阶之多模块(聚合)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!