У меня есть два проекта maven, которые используют плагин avro-maven для генерации кода. Проблема, с которой я столкнулся, заключается в том, что в одном из этих проектов есть объект avro, который использует ссылку на другой объект avro из второго проекта maven. Хотя я включаю банку, созданную из второго проекта, как зависимость от 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, но я не смог заставить его работать, поэтому мой вопрос: как это возможно? Как я могу импортировать определение avro из зависимой банки для создания моего кода?