maven搭建模块化项目过程遇到的坑

本文记录了在使用maven构建模块化Spring+Mybatis项目时遇到的常见问题,包括src/main/resources下的folder文件夹显示为包、项目发布启动时mybatis无法加载mapper配置、以及项目重新部署时的类路径问题。通过调整eclipse的java build path和Deployment Assembly设置,解决了这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

采用maven构建模块化项目,将一个整体项目拆分为entity、dao、service、web四个独立模块,项目架构采用spring MVC+spring+mybatis,整个过程直至项目跑起来,报了几个小问题,在此记录,算是经验吧。

1、src/main/resources下创建的folder文件夹,显示为包,而不是文件夹

产生原因:

鼠标右键项目–>properties–>java bulid path–>Source–>src/main/resources,下面included和excluded作用分别为编译期包含的路径和编译期排除的路径,

之所以folder显示为包不显示为文件夹,是因为src/main/resources路径被包含进入编译期,自动将其下面的folder按照package处理

解决办法:

此时只需要将src/main/resources路径排除在编译期路径外即可:included:(All),excluded:**,意为包含所有,然后再排除所有(**表示当前路径及其子级路径)

相反,如果src/main/java目录下的package不显示为包而显示为文件夹,则与上述处理相反:included:(All),excluded:(None),相关文件将被编译

设计相关内容:
package,source folder,folder区别eclipse included和excluded的作用

2、项目发布、启动,报无法加载[classpath:/mybatis/mappers/*.xml]

产生原因:

项目被拆分为4个子模块,mapper配置文件位于dao模块,配置数据源和mybatis的spring-context.xml配置文件位于web模块,在web的pom.xml中添加dao依赖,

四个模块在eclipse中都出于open状态,即使在pom.xml中明确了引用dao依赖的type为jar,但此时dao默认以war的形式被发布到web的lib里,所以此时无法读取到mapper配置文件

解决办法:

鼠标右键项目–>properties–>Deployment Assemly–>Add–>project,将所需要依赖的子模块entity、dao、service加入当前项目Web部署组件目录中,此时要注意deploy path列,依赖被发布到的位置、版本、类型,比如:WEB-INF/lib/xxx-dao-1.0.0.jar
当然,也可以不这么费事,直接把entity、dao、service子模块close掉,这样web将明确使用pom.xml中依赖定义的项目、版本以及类型等

拓展内容:
eclipse中output folder和deployment assembly用法有什么不同 :一个是编译期用的, 一个是部署期用的。
关于web工程的deployment assembly :4楼回答

3、项目重新发布、启动,错误同上

产生原因:

因为上面2的问题,采用的解决方案是在web项目的Deployment Assemly里面添加entity、dao、service子模块,并指定了版本、类型等,此时则把entity、dao、service三个项目的Deployment Assemly里面的Web部署组件目录直接打成了jar包,

分别去看三个子模块,发现它们的Deployment Assemly的deploy path列,src/main/java和src/main/resources的部署目录都是WEB-INF/classes,那么,可以遇见,发布到web项目的三个子模块jar目录结构肯定是WEB-INF/classes/…,实际上并不应该带有WEB-INF/classes目录结构

解决办法:

依据上面分析的原因,此时只需要把三个子模块的Deployment Assemly的deploy path列,src/main/java和src/main/resources的部署目录更改为根目录,即 WEB-INF/classes 更改为 /

与上面问题2的解决方案一样,可以不这么费事,直接把entity、dao、service子模块close掉,这样web将明确使用pom.xml中依赖定义的项目、版本以及类型等

拓展内容:Java的JAR包, EAR包 ,WAR包内部结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值