不能使用maven从avsc文件生成类



我有一个问题,从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生成的。

调用Maven时->包中的目标生成源,我应该看到我的类,但它没有。有人遇到过类似的问题吗?

您需要添加<plugin>部分中提到的avro-maven-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

最新更新