0

我在从 avsc 文件生成类时遇到问题。在 pom.xml 我添加了适当的依赖项:

<dependencies>
        <dependency>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
            <version>1.10.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro-compiler</artifactId>
            <version>1.10.2</version>
        </dependency>
    </dependencies>

在存储库包中,我创建了一个 avro 文件夹,在其中放置了扩展名为 .avsc 的类模式。

{"type":"record",
"name":"Customer",
"namespace":"com.avroGenerator",
"fields":[
 {"name":"name","type":"string"},
 {"name":"age","type":"int"},
 {"name":"isOfAge","type":"boolean"},
 {"name":"currencies","type":
  {"type":"array","items":{
    "type":"record",
    "name":"Currency",
    "namespace":"com.avroGenerator",
    "fields":[
     {"name":"name","type":"string"},
     {"name":"shortcut","type":"string"}]}},
  "default":[]}]}

它是一个客户类,包括一系列货币巫婆也是从 avsc 生成的。

在 target-generated-sources 中调用 Maven-> Package 时,我应该看到我的类,但它没有。有没有人遇到过类似的问题?

4

1 回答 1

0

您需要添加一节avro-maven-plugin中提到的<plugin>

https://avro.apache.org/docs/current/gettingstartedjava.html

或者,如果您使用的是 Maven,请将以下依赖项添加到您的 POM:

 <dependency>   
    <groupId>org.apache.avro</groupId>  
    <artifactId>avro</artifactId>   
    <version>1.10.2</version>
</dependency>

以及Avro Maven 插件...

<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>
        <sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
        <outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
  </configuration>
</plugin>

avro-compiler如果您只想将架构资源文件转换为类,则不需要在自己的代码中作为依赖项

于 2021-08-26T15:47:14.743 回答