IntelliJ IDEA 没有看到 类 从子项目中的 protobuf 文件生成
IntelliJ IDEA doesn't see classes generated from protobuf files in a subproject
我有一个带有模块的 Gradle 项目。 moduleA
仅包含 protobuf 文件并生成一个 jar 文件,其中 类 从 .proto
文件生成。 moduleB
取决于 moduleA
(implementation 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
如果我 build/run 来自 Gradle,该项目运行良好。
问题: IntelliJ IDEA 在 moduleB
的源中看不到 moduleA
生成的 类(导入为红色)。
问题:如何让 IntelliJ IDEA 正确识别从 .proto
文件构建的 类?
我使用的是IntelliJ IDEA 2020.2.4(旗舰版)
这与在同一模块中使用 proto 生成的代码相同,它需要先存在才能被 IDE 拾取。
此类依赖关系无法静态解决。生成的原型 类 仅在 moduleA
构建 后可用。您需要至少构建一次 moduleA
(并在必要时刷新 IDE 导入)以使其生成的代码可访问 moduleB
.
为了 IDE 解析 类 并从依赖模块导入这些 类 应该存在并且它们必须位于依赖模块的 source directory 中。看起来 类 生成到一个目录中,该目录未被 IDE 识别为 source 目录。尝试将此生成的目录添加为 Gradle 源集。在模块 A 的 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 生成的代码,以查看idea
' gradle 插件何时应用于模块A 的build.gradle 文件.
有关 protobuf gradle 插件文档,请参阅 IntelliJ IDEA tips for com.google.protobuf gradle plugin。
此设置适用于我的 Intellij IDEA 2021.1。
简短回答:将 idea
gradle 插件应用到模块 A。
我有一个带有模块的 Gradle 项目。 moduleA
仅包含 protobuf 文件并生成一个 jar 文件,其中 类 从 .proto
文件生成。 moduleB
取决于 moduleA
(implementation 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
如果我 build/run 来自 Gradle,该项目运行良好。
问题: IntelliJ IDEA 在 moduleB
的源中看不到 moduleA
生成的 类(导入为红色)。
问题:如何让 IntelliJ IDEA 正确识别从 .proto
文件构建的 类?
我使用的是IntelliJ IDEA 2020.2.4(旗舰版)
这与在同一模块中使用 proto 生成的代码相同,它需要先存在才能被 IDE 拾取。
此类依赖关系无法静态解决。生成的原型 类 仅在 moduleA
构建 后可用。您需要至少构建一次 moduleA
(并在必要时刷新 IDE 导入)以使其生成的代码可访问 moduleB
.
为了 IDE 解析 类 并从依赖模块导入这些 类 应该存在并且它们必须位于依赖模块的 source directory 中。看起来 类 生成到一个目录中,该目录未被 IDE 识别为 source 目录。尝试将此生成的目录添加为 Gradle 源集。在模块 A 的 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 生成的代码,以查看idea
' gradle 插件何时应用于模块A 的build.gradle 文件.
有关 protobuf gradle 插件文档,请参阅 IntelliJ IDEA tips for com.google.protobuf gradle plugin。
此设置适用于我的 Intellij IDEA 2021.1。
简短回答:将 idea
gradle 插件应用到模块 A。