IDEA中Maven项目父子工程依赖(项目多root解决),以及各子模块之间依赖关系(各模块打包方式以及依赖导入)

1.写在前面

  • 假设一个Maven项目(这里是一个SSM整合项目)他的构造布局如下:
    话不多说,直接上图:
    在这里插入图片描述
  • 这个项目存在父子工程(这里删掉了父工程的src文件夹,为了使项目可读性更高)
  • 这里的子模块dao,service,web分别对象项目的MVC架构三层持久层、业务层和视图层,domain和utils分别是实体类和工具包

2.解决项目模块出现多root现象

  • 先给出解决方法,后再研究问题原因
    我们打开父工程的pom.xml,在这里添加上父子模块的配置<modules …
    我们在最右侧可以看到该项目的工程结构只有一个root工程,其他都为子工程
    添加完毕,自动配置,OK,问题解决
    在这里插入图片描述
  • 至于原因,最可能的原因就是创建父工程后,再创建子工程的时候,没有勾选继承父工程的选项,若勾选上,IDEA这个强大的IDE是会自动帮你构建完成的。

3.解决子模块之间的依赖关系

1)先说一下各模块的打包方式

  • 我们接着看父工程的pom.xml文件,在他的最前面规定了他的打包方式,注意这里打包方式是pom方式,用在父级工程或聚合工程中。用来做jar包的版本控制。必须指明这个聚合工程的打包方式为pom
    在这里插入图片描述

  • 而其子模块的打包方式是我们最常用的jar方式打包
    以下四个模块都是采用jar方式打包,我们可能注意到这里并没有那个web子工程,因为他特殊,并不是使用jar来打包的;
    jar包中包含了你写程序的所有服务或者第三方类库,它通常是作为幕后工作者,为视图层用户与之交换数据处理的一个服务者
    在这里插入图片描述

  • web模块是我们要部署到tomact上提供给客户端去访问的东东,并没有复杂业务逻辑的处理, 一个war文件可以看成一个web应用程序。与jar封装不同的是:它内聚了很多页面,如html、jsp,Servlet,js,css,icon图片文件等等,当然还包括组成web应用的其他组件,这些文件基本没有复杂业务逻辑的处理,基本上仅仅是用来当做程序的门户负责与使用者交互,仅此而已。
    在这里插入图片描述

  • 补充一点,pom方式打包即为pom工程,jar方式打包即为jar工程,war方式打包即为war工程,具体为什么这么打包,有什么优点,总体上来说是为了项目的前后端分离和结构清晰。


2)各个子工程之间的依赖导入问题

  • 以web这个子工程为例,这里因为这个工程当中涉及到了dao层和service层的操作,所以导入这两个工程的依赖,其他的模块导入方式相同
    在这里插入图片描述

  • 这里要注意的是,在依赖导入之前,首先确定自己的各个模块的打包方式是否正确,怎么打包在上边已经有讲到,具体每个模块导入哪些依赖根据自己的业务逻辑决定


4.最后讲一个自己遇到的非常无语的问题

  • 在我的web模块中,其中的application.xml,一直有两个错误,就是开启注解扫描,总是在这两个包给我报红,而且自己也已经导入dao模块和service模块的依赖了,仍然报红;
  • 最后发现,真正原因是我对应的dao模块和service模块根本就没有对应的pers.pluto.dao和pers.plutoservice.impl这两个文件夹;
    - 总结原因:自己对父子工程的原理理解并不透彻,现在我个人的理解是:
    -父工程的存在只是单纯的为了让各个子工程之间建立一定的联系,就像他们互相导入依赖之后就可以相互调用;
    -在这里其实是完全拥有所导入依赖的一切,包括文件夹结构,比如dao模块中的的pers.pluto.dao,在web项目中使用(开启注解扫描),直接使用其本来的路径就可以,不用管父工程的路径;
    -所以我在这里直接删掉了父工程的src文件夹,为了避免误解,让结构更清晰。

    在这里插入图片描述

个人理解,如有不到之处,欢迎指出,共同学习。

  • 13
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值