intellij idea在子项目中看不到从protobuf文件生成的类

5vf7fwbs  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(1050)

我有一个带模块的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

如果我从gradle构建/运行这个项目,它会运行得很好。
问题:intellij idea看不到从 moduleA 来源 moduleB (进口为红色)。
问题:如何让intellij idea正确识别从 .proto 文件夹?
我正在使用intellij idea 2020.2.4(终极版)。

qij5mzcb

qij5mzcb1#

这与在同一个模块中使用proto生成的代码是一样的,它需要先在那里,然后ide才能获取它。
这种依赖关系不能静态解析。原型生成的类只有在 moduleA 是建的。你需要建立 moduleA 至少一次(并在必要时刷新ide导入),以使其生成的代码可访问 moduleB .

mctunoxg

mctunoxg2#

为了让ide解析类和从从属模块导入,这些类应该存在,并且它们必须位于从属模块的源目录中。看起来类是生成到ide无法识别为源目录的目录中的。尝试将此生成的目录添加为渐变源集。在modulea的gradel构建文件中添加:

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

哪里 'build/generated/source/proto/main/java' -生成源的目录。
intellij idea有一个相关的问题:idea-209418。

相关问题