You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java Maven项目中使用protoc-jar-maven-plugin导入其他proto文件

报错原因

protoc编译时需要通过--proto_path(简写-I)参数指定导入文件的搜索路径,你当前使用的protoc-jar-maven-plugin没有默认将项目的/src/main/proto根目录加入搜索路径,因此编译器无法通过相对路径找到state/metadata.proto。

解决步骤

  1. 调整Maven插件配置,显式添加proto根目录为导入搜索路径,完整配置参考如下:
<plugin>
    <groupId>com.github.os72</groupId>
    <artifactId>protoc-jar-maven-plugin</artifactId>
    <version>3.11.4</version> <!-- 替换为你实际使用的插件版本 -->
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <!-- 核心配置:指定proto导入搜索路径 -->
                <includeDirectories>
                    <include>${project.basedir}/src/main/proto</include>
                </includeDirectories>
                <!-- 保留你原本的其他配置,比如编译输入目录、输出规则等 -->
                <inputDirectories>
                    <include>${project.basedir}/src/main/proto</include>
                </inputDirectories>
                <outputTargets>
                    <outputTarget>
                        <type>java</type>
                        <outputDirectory>${project.build.directory}/generated-sources/protobuf/java</outputDirectory>
                    </outputTarget>
                </outputTargets>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 验证配置生效
    清理本地缓存后重新执行构建:
mvn clean compile

同模块下的proto导入此时即可正常识别。
3. 多模块项目适配(可选)
如果需要导入其他Maven模块的proto文件,需要额外在当前模块添加对应模块的proto类型依赖:

<dependency>
    <groupId>对应模块的groupId</groupId>
    <artifactId>对应模块的artifactId</artifactId>
    <version>对应模块的版本</version>
    <type>proto</type>
</dependency>

同时在插件的includeDirectories中新增路径:

<include>${project.build.directory}/protobuf-dependencies</include>

内容的提问来源于stack exchange,提问作者Jeff Gaer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:15:07