Я работаю над проектом, использующим jsonschema2pojo-maven-plugin для генерации классов Java из схемы Json.
Чтобы показать код, вот как выглядит плагин def:
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>0.4.34</version>
<configuration>
<sourcePaths>
<sourcePath>${basedir}/src/main/schema/Request.json</sourcePath>
<sourcePath>${basedir}/src/main/schema/Response.json</sourcePath>
</sourcePaths>
<targetPackage>...</targetPackage>
<annotationStyle>jackson2</annotationStyle>
<useCommonsLang3>true</useCommonsLang3>
<useDoubleNumbers>true</useDoubleNumbers>
<includeAccessors>true</includeAccessors>
<includeAdditionalProperties>true</includeAdditionalProperties>
<sourceType>jsonschema</sourceType>
<generateBuilders>true</generateBuilders>
<includeJsr303Annotations>true</includeJsr303Annotations>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
Схема предоставлена другой командой. В идеале, когда они предоставляют обновления, я хочу, чтобы наши разработчики могли просто проверить новую версию без изменений.
К сожалению, я обнаружил, что в плагине есть "beature" (ошибка функции, зависящая от вашего POV), такая, что если схема запускается так:
{
"type" : "object",
"id" : "urn:jsonschema:com:...",
"properties" : {
он умрет при разборе значения id, потому что не может разобрать значение "urn". Наш обходной путь для этого - просто удалить свойство "id". Мы не заботимся об этом, и я не собираюсь просить другую команду всегда удалять это, прежде чем они дадут это нам. Для этого плагина уже есть проблема, связанная с этим, но я не задерживаю дыхание (очевидно, это была проблема более 2 лет).
Итак, я хочу, чтобы разработчики по-прежнему проверяли неизмененный файл схемы, но я хочу, чтобы процесс сборки преобразовал этот исходный файл схемы во временный файл, в котором это значение «id» удалено, и затем пусть этот плагин использует этот файл вместо исходного файла схемы.
Итак, мне нужен плагин, который выполняется перед этим плагином, который может выполнять преобразование json из одного файла в другой файл.
Может кто-нибудь описать, как я мог это сделать?