父工程
父工程用于指定子工程都包含的依赖,首先需要指明maven打包方式为pom:<packaging>pom</packaging>,子工程中使用<parent></parent>指明父工程是什么。
注意:为了方便修改模块版本,通常不指定子模块的版本,这样就直接继承了父工程的版本。
父:<groupId>co.yixiang</groupId><artifactId>yshop</artifactId><packaging>pom</packaging><version>3.0</version>子:<parent><artifactId>yshop</artifactId><groupId>co.yixiang</groupId><version>3.0</version></parent>
聚合工程
聚合工程:多个子模块可以独立运行,但是想要一键全部打包运行,需要建立聚合工程。
聚合工程是没有源码的工程,通常是子模块的父工程。使用<modules></modules>指明包含的子模块即可。
聚合工程:<modules><module>yshop-common</module><module>yshop-logging</module><module>yshop-admin</module><module>yshop-tools</module><module>yshop-generator</module><module>yshop-weixin</module><module>yshop-shop</module><module>yshop-mproot</module></modules>
子模块间版本依赖问题
如common依赖shop,mproot模块,那么common的pom会这么写:
<dependency><groupId>co.yixiang</groupId><artifactId>yshop-shop</artifactId><version>3.0</version></dependency><dependency><groupId>co.yixiang</groupId><artifactId>yshop-mproot</artifactId><version>3.0</version></dependency>
然后你在更新项目后,想把项目号变成4.0。你在父工程(聚合工程)里改了版本号为4.0,也改了parent的版本,但是子模块依赖这里没改,就会导致不存在3.0的子模块(因为子模块继承父模块版本)。
一个解决方法是:子模块里原来所有3.0的地方都用properties标签代替:
<properties><project.version>3.0</project.version></properties>
每个子模块都这么写,然后父模块改为4.0时,更新每个子模块的properties的project.version为4.0:
<properties><project.version>4.0</project.version></properties>
这样可以保证版本不出错。所有父模块、子模块、子模块相互依赖版本都是4.0。但是如果子模块多了,那改起来也麻烦。
refer: https://blog.csdn.net/onupway/article/details/86512836
插件解决依赖
另外一个方法,使用idea的maven project version插件,可以一键更新某个模块的版本,同步更新使用到的地方,很方便。使用时直接更新父模块的版本即可。
这种情况不需要写properties和project.version,子模块依赖直接写死3.0,利用插件会一键改变版本:
<dependency><groupId>co.yixiang</groupId><artifactId>yshop-shop</artifactId><version>3.0</version></dependency><dependency><groupId>co.yixiang</groupId><artifactId>yshop-mproot</artifactId><version>3.0</version></dependency>

