编程语言
首页 > 编程语言> > java – 如何从包含另一个XSD的XSD生成类

java – 如何从包含另一个XSD的XSD生成类

作者:互联网

我有2个项目:

xsdproject/
   src/main/resources/
      a.xsd
      b.xsd

implproject/

在implproject中,我想使用maven-jaxb2-plugin从xsd生成类.

        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <cleanPackageDirectories>true</cleanPackageDirectories>
                <forceRegenerate>true</forceRegenerate>
                <schemas>
                    <schema>
                        <dependencyResource>
                            <groupId>some.group</groupId>
                            <artifactId>xsdproject</artifactId>
                            <version>${project.version}</version>
                            <resource>a.xsd</resource>
                        </dependencyResource>
                    </schema>
                    <schema>
                        <dependencyResource>
                            <groupId>some.group</groupId>
                            <artifactId>xsdproject</artifactId>
                            <version>${project.version}</version>
                            <resource>b.xsd</resource>
                        </dependencyResource>
                    </schema>
                </schemas>
            </configuration>
        </plugin>

问题来了 – > b.xsd有

<xs:include schemaLocation="a.xsd" /> 

在生成过程中我有一个错误:

 Failed to read schema document 'a.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.

有没有办法成功导入2 XSD并编译它们?

解决方法:

免责声明.我是maven-jaxb2-plugin的作者.

请尝试以下方法:

SRC /主/资源/ catalog.cat:

REWRITE_SYSTEM "a.xsd" "maven:some.group:xsdproject:jar::!/a.xsd"

在pom.xml中的配置中

<catalog>src/main/resource/catalog.cat</catalog>

(见Using Catalogs.)

我还认为你只需要编译b.xsd.应自动包含a.xsd.

如果出现问题,请运行mvn -X clean install并检查日志.

也可以看看:

> Modular Schema Compilation
> ogc-schemas – 这个项目或多或少都是一样的. schemas模块仅封装模式和其他模块(例如owc/0.3.1)从schemas软件包中编译这些模式.在任何情况下,这都适用于导入和包含.

如果您需要进一步的支持,请file an issue并提供示例项目.

标签:java,xsd,jaxb,maven-jaxb2-plugin
来源: https://codeday.me/bug/20190703/1362655.html