Плагин Maven jsonschema2pojo-maven-plugin не генерирует pojos для всех определений - PullRequest
0 голосов
/ 01 марта 2020

Мы используем jsonschema2pojo-maven-plugin для генерации pojos java из файла схемы json. Плагин генерирует pojos для определений, которые ссылаются на схему, но не для всех определений.

Есть ли возможность заставить плагин генерировать pojos для всех определений в schmea?

Ниже приведены используемые конфигурации pom-плагина и определения схемы, здесь плагин

  • генерирует POJO только для продукта определение
  • не генерирует POJO для продукта подкласса определения (" proprietaryProduct " & " thirdPartyProduct")

это проблема, нам также нужно создать pojos для этих определений подкласса

Конфигурация плагина Maven:

    <plugin>
        <groupId>org.jsonschema2pojo</groupId>
        <artifactId>jsonschema2pojo-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>generate-models</id>
                <configuration>
                    <targetPackage>com.xyz.abc</targetPackage>
                    <useCommonsLang3>true</useCommonsLang3>
                </configuration>
                <goals>
                    <goal>generate</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

Json Схема:

{
  "$schema":"http://json-schema.org/draft-04/schema",
  "definitions":{
    "product":{
      "type":"object",
      "properties":{
        "type":{
          "enum":[
            "THIRD_PARTY",
            "PROPRIETARY"
          ],
          "type":"string"
        },
        "price":{
          "type":"string"
        }
      },
      "additionalProperties": false
    },
    "proprietaryProduct": {
      "type": "object",
      "properties": {
        "batchName": {
          "type": "string"
        }
      },
      "extends": "#/definitions/product"
    },
    "thirdPartyProduct": {
      "type": "object",
      "properties": {
        "thirdPartyName": {
          "type": "string"
        }
      },
      "extends": "#/definitions/product"
    }
  },
  "type":"object",
  "properties":{
    "product":{
      "type":"object",
      "$ref":"#/definitions/product"
    }
  },
  "additionalProperties":false
}

1 Ответ

0 голосов
/ 06 марта 2020

Публикация этого ответа (в качестве обходного решения), так как он может быть полезен для тех, кто сталкивается с той же проблемой.

После изучения и чтения через плагин jsonschema2pojo-maven-plugin: сгенерируйте документацию, я понял, что этот плагин не может генерировать POJO для определения без ссылок в схеме.

В качестве обходного пути мы могли бы определить их как отдельное определение json -схемы и заставить плагин генерировать для него pojos.

Итак, мне нужно создать отдельное определение схемы для каждого подкласса (в этом случае - # / Definitions / proprietaryProduct необходимо определить как отдельное определение схемы)

...