Как преобразовать файл схемы json перед его использованием в плагине Maven jsonschema2pojo-maven-plugin - PullRequest
0 голосов
/ 26 января 2019

Я работаю над проектом, использующим 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 из одного файла в другой файл.

Может кто-нибудь описать, как я мог это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...