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

如何通过Maven的protoc-jar-maven-plugin将protobuf生成的Java类打包为jar

解决方案

方案1:使用插件自带的输出jar功能

你可以直接在protoc-jar-maven-plugin的<configuration>块中添加<outputJar>参数,指定生成jar的输出路径即可,插件会在生成Java类后自动将其编译打包为jar文件。
修改后的配置如下:

<plugin>
    <groupId>com.github.os72</groupId>
    <artifactId>protoc-jar-maven-plugin</artifactId>
    <version>${version.os72}</version>
    <executions>
        <execution>
            <id>protoc.main</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <protocVersion>${version.protobuf}</protocVersion>
                <addSources>main</addSources>
                <inputDirectories>
                    <include>src/main/resources/protobuf</include>
                </inputDirectories>
                <!-- 新增这一行,指定jar输出路径,可自定义路径和文件名 -->
                <outputJar>target/protobuf-generated-classes.jar</outputJar>
            </configuration>
        </execution>
    </executions>
</plugin>

执行mvn generate-sources后即可在指定路径拿到生成的jar包。

方案2:和项目主代码一起打进项目jar

你当前配置中的<addSources>main</addSources>已经将生成的Java源码目录自动加入了Maven的主编译路径,正常执行mvn clean package命令时,这些生成的类会和你项目的其他业务代码一起被编译,最终打进项目的主jar包中。
如果没有正常打入,检查你项目中maven-jar-plugin等打包插件是否配置了排除规则,排除了generated-sources目录下的编译产物。

方案3:单独打包已生成的类

如果你已经成功生成了Java类到target/generated-sources目录,也可以额外配置maven-jar-plugin单独打包该目录的编译产物,配置示例如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <id>pack-proto-classes</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <classifier>proto</classifier>
                <classesDirectory>target/generated-sources</classesDirectory>
                <finalName>protobuf-generated</finalName>
            </configuration>
        </execution>
    </executions>
</plugin>

执行mvn package后会在target目录生成名为protobuf-generated-proto.jar的归档文件。

内容的提问来源于stack exchange,提问作者Daniel Pop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:27:00