我有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/main/resources/catalog.cat :

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

configuration 中的 pom.xml
<catalog>src/main/resource/catalog.cat</catalog>

(见 Using Catalogs 。)

我也认为你只需要编译 b.xsda.xsd 应自动包含在内。

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

也可以看看:
  • Modular Schema Compilation
  • ogc-schemas - 这个项目或多或少做了同样的事情。 schemas 模块仅打包模式,其他模块(例如 owc/0.3.1 )从 schemas 包中编译这些模式。这在任何情况下都适用于导入和包含。

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

    10-06 13:38
    查看更多