繁体   English   中英

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

[英]IntelliJ IDEA doesn't see classes generated from protobuf files in a subproject

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

moduleA
│   build.gradle
│   src
│   └───main
│       └───proto  <-- proto file defining gRPC services
moduleB
│   build.gradle
│   src            <-- code dependent on classes generated from moduleA
build.gradle

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

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

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

我正在使用 IntelliJ IDEA 2020.2.4(终极版)。

这与在同一模块中使用 proto 生成的代码相同,它需要先存在,然后才能被 IDE 拾取。

这种依赖关系不能静态解决。 原型生成的类仅在moduleA构建后可用。 您需要构建moduleA至少一次(并在必要时刷新 IDE 导入)以使其生成的代码可以访问moduleB

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

sourceSets {
    main {
        java {
            srcDirs = ['build/generated/source/proto/main/java']
        }
    }
}

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

IntelliJ IDEA 有一个相关问题: IDEA-209418

Intellij 不知道从.proto文件生成的类的位置。 'com.google.protobuf' gradle 插件使用为 Intellij 生成的代码注册源目录,以查看何时在模块文件的 build.gradle 文件中应用idea ' gradle 插件

有关 protobuf gradle 插件文档 的 com.google.protobuf gradle 插件,请参阅 IntelliJ IDEA 提示

此设置适用于 Intellij IDEA 2021.1。

简短回答:将idea gradle 插件应用于模块A。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM