Micronaut Maven插件开发模式下无法找到domain模块Bean的问题
解决Micronaut多模块mn:run启动找不到Domain模块Bean的问题
可能的原因及修复方案
1. 配置Bean扫描范围
Micronaut默认只扫描当前启动模块(web模块)的包及其子包,Domain模块的Bean不在这个范围内就不会被注册。
- 修复:在web模块的
application.yml里添加扫描配置,指定Domain模块的包路径:
或者在启动类上用micronaut: package-scan: packages: - com.yourcompany.domain - com.yourcompany.web@MicronautScan注解指定扫描包:import io.micronaut.runtime.Micronaut; import io.micronaut.context.annotation.MicronautScan; @MicronautScan({"com.yourcompany.domain", "com.yourcompany.web"}) public class WebApplication { public static void main(String[] args) { Micronaut.run(WebApplication.class, args); } }
2. 确认依赖作用域
检查web模块对domain模块的依赖是否是compile作用域——mn:run运行时需要依赖模块在类路径里,要是用了provided这类作用域就会出问题。
- 查看web模块
pom.xml的依赖配置:<dependency> <groupId>com.yourcompany</groupId> <artifactId>domain</artifactId> <version>${project.version}</version> <scope>compile</scope> <!-- 确保是compile,默认也是,但显式写更稳妥 --> </dependency>
3. 检查Domain模块的Bean注解
Domain里的类必须加Micronaut的Bean注解,比如@Singleton、@Service、@Repository,不然框架识别不了这些类。
- 示例:
import jakarta.inject.Singleton; @Singleton public class UserService { // 业务逻辑代码 }
4. 先安装Domain模块再启动
mn:run不会自动构建依赖的domain模块,可能导致类路径里没有最新的编译文件。
- 先在项目根目录执行:
再运行web模块的启动命令:mvn clean install -pl domain -ammvn -pl web mn:run
5. 升级Micronaut Maven插件版本
旧版本插件可能存在多模块支持的bug,换成最新稳定版试试。
- 在pom.xml里更新插件:
<plugin> <groupId>io.micronaut.build</groupId> <artifactId>micronaut-maven-plugin</artifactId> <version>4.3.4</version> <!-- 替换成最新稳定版本 --> <extensions>true</extensions> </plugin>
内容的提问来源于stack exchange,提问作者marcin_koss
相关产品推荐
相关产品推荐

