You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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模块,可能导致类路径里没有最新的编译文件。

  • 先在项目根目录执行:
    mvn clean install -pl domain -am
    
    再运行web模块的启动命令:
    mvn -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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 01:45:10