IntelliJ IDEA 看不到从子项目中的 protobuf 文件生成的类

Sas*_*ota 5 java intellij-idea gradle proto grpc

我有一个带有模块的 Gradle 项目。moduleA仅包含 protobuf 文件并生成一个 jar 文件,其中包含从.proto文件生成的类。moduleB取决于moduleAimplementation project(':moduleA'))。

\n
moduleA\n\xe2\x94\x82   build.gradle\n\xe2\x94\x82   src\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80main\n\xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80proto  <-- proto file defining gRPC services\nmoduleB\n\xe2\x94\x82   build.gradle\n\xe2\x94\x82   src            <-- code dependent on classes generated from moduleA\nbuild.gradle\n
Run Code Online (Sandbox Code Playgroud)\n

如果我从 Gradle 构建/运行该项目,则该项目运行良好。

\n

问题:moduleA IntelliJ IDEA 看不到从的源中生成的类moduleB(导入为红色)。

\n

问题:如何让 IntelliJ IDEA 正确识别从.proto文件构建的类?

\n

我使用的是 IntelliJ IDEA 2020.2.4(终极版)。

\n

And*_*rey 5

为了让 IDE 解析类并从依赖模块导入,这些类应该存在,并且它们必须位于依赖模块的目录中。看起来这些类生成到一个 IDE 无法识别为目录的目录中。尝试添加此生成的目录作为 Gradle 源集。在 moduleA 的 Gradel 构建文件中添加:

sourceSets {
    main {
        java {
            srcDirs = ['build/generated/source/proto/main/java']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

where 'build/generated/source/proto/main/java'- 生成源的目录。

IntelliJ IDEA 存在一个相关问题:IDEA-209418