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

使用Maven无法从avsc文件生成对应类的问题求助

解决方案

你只添加了Avro相关的基础依赖,没有配置avro-maven-plugin插件,Maven默认不会自动执行avsc到Java类的编译逻辑,这是绝大多数同类问题的根因。

步骤1:添加avro-maven-plugin配置

在pom.xml的<build><plugins>节点下添加如下配置,插件版本需和你引入的Avro依赖版本保持一致:

<plugin>
    <groupId>org.apache.avro</groupId>
    <artifactId>avro-maven-plugin</artifactId>
    <version>1.10.2</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>schema</goal>
            </goals>
            <configuration>
                <!-- 替换为你实际存放avsc文件的目录路径 -->
                <sourceDirectory>${project.basedir}/src/main/avro</sourceDirectory>
                <!-- 生成类的输出路径,默认即可,也可以自定义 -->
                <outputDirectory>${project.build.directory}/generated-sources/avro</outputDirectory>
                <!-- 可选配置:生成的类是否添加setter方法 -->
                <createSetters>true</createSetters>
            </configuration>
        </execution>
    </executions>
</plugin>

步骤2:校验路径配置

  • 确认sourceDirectory配置的路径和你实际存放.avsc文件的路径完全匹配,注意大小写、文件夹拼写是否正确
  • 确认所有schema文件的后缀为.avsc,没有隐藏的.txt后缀

步骤3:执行生成命令

配置完成后可以单独执行生成目标验证效果,不需要全量打包:

mvn avro:schema

如果执行成功,就能在配置的outputDirectory路径下看到生成的Customer和Currency两个类。如果执行报错,可以根据控制台的错误提示排查schema语法、文件权限等其他问题。

补充说明

  • 依赖版本和插件版本必须保持一致,否则可能出现兼容性问题导致生成失败
  • 生成完成后如果IDE无法识别生成的类,可以手动将target/generated-sources/avro目录标记为「Generated Sources Root」

内容的提问来源于stack exchange,提问作者Paweł Bocian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:15:03