使用 Jsonix 将 JSON 模式生成为多个文件
Generate JSON Schema as several files using Jsonix
我有几个 XSD 文件,由请求和主题分隔,但是我作为输出获得的 JSON 架构是一个包含数千行的大文件。我想知道是否有一个设置可以使用 Jsonix 将生成的 JSON 模式输出为多个文件。导航起来会更容易。
下面是我的 pom.xml 的 Jsonix 部分:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<extension>true</extension>
<args>
<arg>-Xannotate</arg>
<arg>-Xjsonix</arg>
<arg>-Xjsonix-generateJsonSchema</arg>
</args>
<plugins>
<plugin>
<groupId>org.hisrc.jsonix</groupId>
<artifactId>jsonix-schema-compiler</artifactId>
<version>2.3.10</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>1.0.2</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
<version>1.0.0</version>
</plugin>
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.10</version>
</plugin>
</plugins>
<schemaDirectory>src/main/resources</schemaDirectory>
<schemaIncludes>
<include>**/*.xsd</include>
</schemaIncludes>
<bindingDirectory>src/main/resources</bindingDirectory>
<bindingIncludes>
<include>**/*.xjb</include>
</bindingIncludes>
<generatePackage>com.my.awesome.package</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/jsonSchema</generateDirectory>
<verbose>true</verbose>
</configuration>
</execution>
</executions>
</plugin>
Jsonix 的作者在这里。
I would like to know if there is a setting to output the generated JSON Schema as several files using Jsonix.
是的,请阅读 modules and mappings。
简而言之,一个映射或多或少对应于Java中的一个包。一个模块是一个或多个映射的集合,也是一个生成单元。
您可以configure编译器生成包含特定映射的模块。
如果我对你的情况的理解正确,你有一个很大的模式,你想将映射或 JSON 模式分成几个文件。
以下是我的处理方法。
- 为此配置several mappings for your schema. You can specify exactly which type, elements, etc. go in which mappings. See includes configuration。确保为您的映射提供唯一的名称。
- Condigure several modules 每个都包含一个映射子集。
我不得不说我还没有真正尝试过这种情况。通常人们会做相反的事情——将多个映射组合在一个模块中。但我认为这没有理由不起作用。
示例配置可能如下所示:
<jsonix:module
name="MyRequests">
<jsonix:mapping package="com.my.awesome.package" name="MyRequests">
<jsonix:includes>
<jsonix:type name="MyRequestType"/>
...
</jsonix:includes>
<jsonix:mapping>
</jsonix:module>
<jsonix:module
name="MyResponses">
<jsonix:mapping package="com.my.awesome.package" name="MyResponses">
<jsonix:includes>
<jsonix:type name="MyResponseType"/>
...
</jsonix:includes>
<jsonix:mapping>
</jsonix:module>
我不是 100% 确定这会奏效,但这是一个很好的起点。
我有几个 XSD 文件,由请求和主题分隔,但是我作为输出获得的 JSON 架构是一个包含数千行的大文件。我想知道是否有一个设置可以使用 Jsonix 将生成的 JSON 模式输出为多个文件。导航起来会更容易。
下面是我的 pom.xml 的 Jsonix 部分:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<extension>true</extension>
<args>
<arg>-Xannotate</arg>
<arg>-Xjsonix</arg>
<arg>-Xjsonix-generateJsonSchema</arg>
</args>
<plugins>
<plugin>
<groupId>org.hisrc.jsonix</groupId>
<artifactId>jsonix-schema-compiler</artifactId>
<version>2.3.10</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>1.0.2</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
<version>1.0.0</version>
</plugin>
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.10</version>
</plugin>
</plugins>
<schemaDirectory>src/main/resources</schemaDirectory>
<schemaIncludes>
<include>**/*.xsd</include>
</schemaIncludes>
<bindingDirectory>src/main/resources</bindingDirectory>
<bindingIncludes>
<include>**/*.xjb</include>
</bindingIncludes>
<generatePackage>com.my.awesome.package</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/jsonSchema</generateDirectory>
<verbose>true</verbose>
</configuration>
</execution>
</executions>
</plugin>
Jsonix 的作者在这里。
I would like to know if there is a setting to output the generated JSON Schema as several files using Jsonix.
是的,请阅读 modules and mappings。
简而言之,一个映射或多或少对应于Java中的一个包。一个模块是一个或多个映射的集合,也是一个生成单元。
您可以configure编译器生成包含特定映射的模块。
如果我对你的情况的理解正确,你有一个很大的模式,你想将映射或 JSON 模式分成几个文件。
以下是我的处理方法。
- 为此配置several mappings for your schema. You can specify exactly which type, elements, etc. go in which mappings. See includes configuration。确保为您的映射提供唯一的名称。
- Condigure several modules 每个都包含一个映射子集。
我不得不说我还没有真正尝试过这种情况。通常人们会做相反的事情——将多个映射组合在一个模块中。但我认为这没有理由不起作用。
示例配置可能如下所示:
<jsonix:module
name="MyRequests">
<jsonix:mapping package="com.my.awesome.package" name="MyRequests">
<jsonix:includes>
<jsonix:type name="MyRequestType"/>
...
</jsonix:includes>
<jsonix:mapping>
</jsonix:module>
<jsonix:module
name="MyResponses">
<jsonix:mapping package="com.my.awesome.package" name="MyResponses">
<jsonix:includes>
<jsonix:type name="MyResponseType"/>
...
</jsonix:includes>
<jsonix:mapping>
</jsonix:module>
我不是 100% 确定这会奏效,但这是一个很好的起点。