maven多个子项目、父项目之间的引用问题

maven多个子项目、父项目之间的引用问题

在项目时用到maven管理项目,在一个就项目的基础上开发新的项目;关于子项目和父项目,子项目与子项目之间的调用问题,发现自己存在不足,以下是自己查询的问题,解决了自己的疑惑。

原文链接:https://www.cnblogs.com/kuoAT/p/6845876.html
问题

下面是一个简略的项目结构图
Parent
------ childA(BusinessLayer)— pom.xml

------ childB(WebLayer)— pom.xml

`------ pom.xml

1、Parent怎么能找到childA和childB呢?

在maven中,parent模块组织好childA和childB,叫做"聚合",多个模块联合编译。实现起来很简单,只需要在parent的pom文件里加入以下内容。

childA childB

2、是不是这样写就完全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。所以这三个标签是必须的!!!

4.0.0
com.sang.main *
Parent-Moduel *
1.0.2 *
pom
Simple-main

父pom写好了,子pom就通过标签继承父pom的依赖,如下:

com.sang.main Parent-Moduel 1.0.2 ../pom.xml

值得注意的是标签,如果pom的层次关系就像本例中的那样只隔一层,则可以省略这个。maven同样可以找到子pom。

子pom中引入标签后,就会从父pom继承等属性了,例如childA只需要再加入如下内容即可!

4.0.0
com.sang.business
ChildA-module
jar
childA

3、如何添加依赖?

maven可以让我们方便地管理jar包依赖,具体做法如下:

javax.servlet servlet-api 2.5

如果不通过继承,则需要在每个pom中加入这样的依赖,这样子pom对应的模块可以引用到这个jar包。上面提到的重复引用jar包,可以通过下面的方式解决:

主pom中把依赖通过引起来,表示子pom可能会用到的jar包依赖

javax.servlet servlet-api 2.5

子pom如果需要引用该jar包,则直接引用即可!不需要加入,便于统一管理。此外也可以加入仅在子pom中用到的jar包,比如:

javax.servlet servlet-api org.codehaus.jackson jackson-core-lgpl 1.9.4

注意点(https://blog.csdn.net/java_xxxx/article/details/81181674):

如果父pom中使用的是

的方式,则子pom会自动使用pom中的jar包,
如果父pom使用

....

方式,则子pom不会自动使用父pom中的jar包,这时如果子pom想使用的话,就要给出groupId和artifactId,无需给出version

4、除了jar包依赖,插件也可以通过这样的方式进行管理

org.apache.maven.plugins maven-source-plugin 2.1.1 org.apache.maven.plugins maven-source-plugin

5、如果子pom间存在引用关系,比如childA被引用到了childB的jar包,该怎么做?

com.module childA 1.0.0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值