Java 如何从多个依赖的Avro文件中获取Avro模式

Java 如何从多个依赖的Avro文件中获取Avro模式,java,avro,avro-tools,Java,Avro,Avro Tools,我有一个用例,我们定义自定义用户数据类型,如CustomDate、CustomBigDecimal等,它们在一个avsc文件中,比如datatype.avsc 现在我们创建另一个主avro文件,比如main.avsc,它使用这个文件 例如 [{ "namespace": "com.test.avro.generated", "type": "record", "name":

我有一个用例,我们定义自定义用户数据类型,如CustomDate、CustomBigDecimal等,它们在一个avsc文件中,比如datatype.avsc 现在我们创建另一个主avro文件,比如main.avsc,它使用这个文件

例如

[{
    "namespace": "com.test.avro.generated",
    "type": "record",
    "name": "Model",
    "fields": 
    [
        {
            "name" : "CreatedDate",
            "value": "CustomDate"  //This data type is defined in ref.avsc
        }
    ]
}]
如何获取main.avsc的模式,因为我只能在解析器中指定一个文件名

Schema schema = new Schema.Parser().parse(mainFile);
如何指定它应该使用ref.avsc来获取依赖类型

如果是在应用程序之外做的话,我会像下面那样做

java -jar avro-tools-1.9.1.jar compile schema ref.avsc main.avsc output

我想我也想通过编程实现

你在使用maven插件吗?如果是这样,而您使用的是AVDL文件,您会看到任何自定义类型都使用build.gradle中的org.apache.avro 1.9.1版本完全扩展到avsc outputI am中,您能告诉我使用什么依赖关系吗?或者,如果有这方面的exmaple 1)2)您可以在Avro网站上找到IDL参考。具体来说,您需要查看
import
部分write now we do use import语句,就像它能够在java-jar compile命令中创建生成的代码一样。。。。。上面我也只指定了ref.avsc,要将导入添加到main.avsc文件,我将修改现有文件。有没有办法在解析器本身中指定依赖文件?欢迎您查看compile命令的源代码,了解它如何处理多个文件,但在单个解析器中,没有