应用程序构建成功但 IntelliJ 说我的模块没有读取其他一些模块

Application builds successfully but IntelliJ says my module does not read some other modules

我正在尝试使用 JPMS 和 Gradle 多项目功能创建多模块项目。我有 3 个模块用于测试:应用程序、教师和学生。学生依赖于老师,应用程序依赖于两者。学生和教师模块有自己的控制器、服务、实体和存储库。每个模块都有模块-info.java file.

module app {
    requires java.sql;
    requires org.hibernate.orm.core;

    requires spring.boot;
    requires spring.data.jpa;
    requires spring.boot.autoconfigure;

    requires spring.core;
    requires spring.beans;
    requires spring.context;

    requires teacher;
    requires student;

    opens az.chaypay.app to spring.core;
    exports az.chaypay.app to spring.beans, spring.context;
}

module teacher {
    requires static lombok;

    requires spring.web;

    exports az.chaypay.teacher to app;
    exports az.chaypay.teacher.api to student;
    exports az.chaypay.teacher.controller to spring.beans;
    exports az.chaypay.teacher.service.impl to spring.beans;

    opens az.chaypay.teacher.controller to spring.core;
    opens az.chaypay.teacher.repository.dao to spring.core, com.fasterxml.jackson.databind, org.hibernate.orm.core;
}

module student {
    requires static lombok;
    requires com.fasterxml.jackson.databind;

    requires spring.web;

    exports az.chaypay.student to app;
    exports az.chaypay.student.controller to spring.beans;
    exports az.chaypay.student.service.impl to spring.beans;

    opens az.chaypay.student.controller to spring.core;
    opens az.chaypay.student.repository.dao to spring.core, com.fasterxml.jackson.databind, org.hibernate.orm.core;

    requires teacher;
}

当我 运行 我的应用程序使用这些设置时,一切正常。已成功构建应用程序 运行。但是 IntelliJ 抱怨导入。

Package 'org.springframework.data.jpa.repository' is declared in module 'spring.data.jpa', but module 'student' does not read it

我不明白如果 Java 有导入问题那么为什么我的应用程序 运行 没有错误。为什么我的申请 运行 没有 requires 声明?

它“似乎”起作用的原因是 spring-data-jpa 不是模块化依赖项。可以使用自动模块名称 spring.data.jpa.

将其包含在模块化项目中

当您将 requires spring.data.jpa 添加到 app 模块时,它会在未命名模块的模块路径(导出所有包)中可用。

但是一旦到了那里,student 在您执行它时实际上可以看到同一个未命名的模块,因此它“碰巧”可以工作,但这是不正确的。

您的 appstudent 模块都依赖于 org.springframework.data.jpa.repository 包中的 类,因此 IntelliJ 建议将 requires spring.data.jpa 添加到 student 模块描述符正确。