Maven多模块项目MyMetaObjectHandler自动填充日期未生效
plaintext
your-project(父模块)
├─ takeaway-boot(Boot 启动模块,含 main 方法,需要依赖其他子模块)
├─ takeaway-handler(handler 子模块,含 MyMetaObjectHandler)
├─ takeaway-service(service 子模块)
└─ takeaway-mapper(mapper 子模块)
只需在 takeaway-boot
模块的 pom.xml
中,添加对 takeaway-handler
子模块的依赖,Maven 就会自动构建 handler
模块,并将其纳入 Spring 扫描范围:
xml
<!-- takeaway-boot/pom.xml -->
<dependencies><!-- 其他依赖(如 service、mapper 模块) --><dependency><groupId>com.campus.takeaway</groupId> <!-- 父模块的 groupId,与 handler 模块一致 --><artifactId>takeaway-handler</artifactId> <!-- handler 子模块的 artifactId --><version>${project.version}</version> <!-- 版本号,与父模块一致(用 ${project.version} 自动对齐) --></dependency>
</dependencies>
额外注意:确保 handler
子模块是 “可依赖的模块类型”
Maven 子模块的 pom.xml
中,packaging
类型默认是 jar
(可被其他模块依赖),如果 handler
模块的 packaging
被误设为 pom
(父模块类型,不可被依赖),也会导致依赖失败。
检查 takeaway-handler
模块的 pom.xml
,确保 packaging
是 jar
:
xml
<!-- takeaway-handler/pom.xml -->
<parent><groupId>com.campus.takeaway</groupId><artifactId>your-project</artifactId><version>1.0.0</version>
</parent><artifactId>takeaway-handler</artifactId>
<packaging>jar</packaging> <!-- 必须是 jar,默认也是 jar,不要改成 pom -->
验证:重新构建项目并启动
先清理并构建父模块(确保所有子模块按依赖顺序构建):在父模块根目录执行 Maven 命令:
bash
mvn clean install
执行成功后,会在
takeaway-handler/target
目录下生成takeaway-handler-1.0.0.jar
(说明模块已被正确构建)。启动 Boot 模块:此时
takeaway-boot
模块会加载takeaway-handler
模块的MyMetaObjectHandler
类,Spring 也能正常扫描到该类,自动填充功能就能生效了。
多模块开发的核心依赖原则
在 Maven 多模块项目中,只有被 “启动模块” 直接或间接依赖的子模块,才会被构建和加载。比如:
- 如果
takeaway-boot
依赖takeaway-service
,而takeaway-service
依赖takeaway-handler
,那么takeaway-handler
会被间接依赖,也能生效。 - 但如果
takeaway-boot
不直接 / 间接依赖takeaway-handler
,该模块就会被 “孤立”,无法参与项目构建。