在Avro IDL中,如何导入外部提供的架构?

时间:2018-05-22 16:14:19

标签: avro idl

一个简单的例子说明了我的问题。

本质上,我正在开发一个大型项目,其代码分散在多个存储库中。在repo 1中有一个Avro架构" S1"在.avdl文件中定义,该文件被编译到其Avro生成的类中。

在repo 2中,它将repo 1的编译工件作为依赖项,我需要创建一个具有多个记录的新模式,并且还需要嵌入" S1"回购图1。

在repo 2中,我有一个IDL文件,其中包含所有repo 2模式,但我无法在此IDL中包含repo 1的模式。我无法导入它,因为在repo 2中我无法访问repo 1中的模式文件。我可以从repo 1访问Avro生成的类,但IDL似乎不支持引用它的方法。

我该怎么做?如果在IDL中这是不可能的,我将如何在JSON中执行此操作? - 谢谢!

1 个答案:

答案 0 :(得分:0)

Avro IDL的import语句将首先查找相对于输入文件的命名文件。但如果失败则会查看Java类路径。因此,如果repo 1中的jar文件包含IDL文件,则repo 2中的IDL文件应该能够通过jar文件中的路径导入它。

https://github.com/apache/avro/blob/master/lang/java/compiler/src/main/javacc/org/apache/avro/compiler/idl/idl.jj#L153

这似乎没有记录。让我知道它是否适合你。