下面是一个简略的项目结构图
Parent------ childA(BusinessLayer)
— pom.xml
------ childB(WebLayer)
— pom.xml
`—— pom.xml
Parent怎么能找到childA和childB呢?
在maven中,parent模块组织好childA和childB,叫做”聚合”,多个模块联合编译。实现起来很简单,只需要在parent的pom文件里加入以下内容。
1 | <modules> |
是不是这样写就完全ok了?
这样只是告诉maven编译器,在读取parent的pom文件时去找到childA和childB,但还是会分别去编译他们引入的依赖。这样就会导致pom文件引入的包重复!!于是我们引入了”继承”的概念,也就是形成”父子”关系,子pom可以引用到父pom中引入的依赖。具体做法如下:
在parent中,写入以下内容,其中”*”标识的行可以组成一个路径,通过这个路径可以在maven仓库中找到这个pom文件!本例中,path为M2_Path/com/sang/main/Parent-Moduel/1.0.2/xxxx-1.0.2.pom。所以这三个标签是必须的!!!
1 | <modelVersion>4.0.0</modelVersion> |
父pom写好了,子pom就通过
1 | <parent> |
值得注意的是
子pom中引入
1 | <modelVersion>4.0.0</modelVersion> |
如何添加依赖?
maven可以让我们方便地管理jar包依赖,具体做法如下:
1 | <dependencies> |
如果不通过继承,则需要在每个pom中加入这样的依赖,这样子pom对应的模块可以引用到这个jar包。上面提到的重复引用jar包,可以通过下面的方式解决:
主pom中把依赖通过
1 | <dependencyManagement> |
子pom如果需要引用该jar包,则直接引用即可!不需要加入
1 | <dependencies> |
除了jar包依赖,插件也可以通过这样的方式进行管理
1 | <!-- mainModule --> |
如果子pom间存在引用关系,比如childA引用到了childB的jar包,该怎么做?
1 | <dependency> |