应用程序构建成功但 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
在您执行它时实际上可以看到同一个未命名的模块,因此它“碰巧”可以工作,但这是不正确的。
您的 app
和 student
模块都依赖于 org.springframework.data.jpa.repository
包中的 类,因此 IntelliJ 建议将 requires spring.data.jpa
添加到 student
模块描述符正确。
我正在尝试使用 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
在您执行它时实际上可以看到同一个未命名的模块,因此它“碰巧”可以工作,但这是不正确的。
您的 app
和 student
模块都依赖于 org.springframework.data.jpa.repository
包中的 类,因此 IntelliJ 建议将 requires spring.data.jpa
添加到 student
模块描述符正确。