【发布时间】:2019-12-05 10:05:50
【问题描述】:
我有两个使用 avro-maven-plugin 进行代码生成的 maven 项目。我面临的问题 是这些项目中的一个有一个 avro 对象,该对象使用对另一个 avro 对象的引用 第二个maven项目。虽然我将第二个项目生成的 jar 包含为 maven 依赖项,但我无法找到为第二个项目生成代码的方法。
本质上考虑我的第二个项目有一个像下面这样的 avro 定义的情况
{
"namespace": "my.second.project.avro",
"name": "listNode",
"type": "record",
"fields":[
{
"name":"eventList",
"type":{
"type": "array",
"items": "my.first.project.AvroDefinition.avsc"
}
}
]
}
在此定义中,它指的是 AvroDefinition.avsc,它包含在依赖项 jar 之一中, 但我找不到任何方法来提取 AvroDefinition.avsc 并将其用于代码生成 第二个项目。 顺便说一句,avro-maven-plugin 的设置如下:
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal>
<goal>protocol</goal>
<goal>idl-protocol</goal>
</goals>
<configuration>
<imports>
<import>${project.basedir}/src/main/avro/include/</import>
</imports>
<sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
<outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
<stringType>String</stringType>
</configuration>
</execution>
</executions>
</plugin>
我得到的错误如下:
Execution default of goal org.apache.avro:avro-maven-plugin:1.9.1:schema failed:
Undefined name: "my.first.project.AvroDefinition.avsc"
无论如何,我希望我可以使用 maven 远程资源插件,但我无法让它工作,所以我的问题是这怎么可能?如何从依赖 jar 导入 avro 定义以生成我的代码?
【问题讨论】:
-
我以前做过,但是只使用了AVDL...avsc文件无法导入其他文件
-
感谢您的信息,我终于找到了一个解决方法,通过 maven 远程资源插件,并按照这个线程 stackoverflow.com/questions/30669013/…
-
酷。请随时使用可行的解决方案在下面回答您自己的问题
标签: maven avro avro-tools