如何告诉maven-jaxb2-plugin在maven依赖项中的所有.xsd文件上运行xjc?

时间:2015-09-11 23:08:28

标签: jaxb jaxb2 xjc maven-jaxb2-plugin

我正在使用maven-jaxb2-plugin,我的.xsd文件属于maven依赖项。文档显示您在maven依赖项中指定.xsd,如此

<schema>
    <!-- Specifies a schema from the Maven artifact. -->
    <dependencyResource>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin-tests-po</artifactId>
        <!--  Version of the artifact. May be omitted.
        The plugin will then try to find the version using
        the dependencyManagement and dependencies of the project. -->
        <version>${project.version}</version>
        <!-- Path of the resource within the artifact. -->
        <resource>purchaseorder.xsd</resource>
    </dependencyResource>
</schema>

我想在依赖的.jar文件中的所有.xsd文件上运行xjc。 .xsd文件位于.jar文件中的不同目录中。我试过这个

<resource>**/*.xsd</resource>

但是这个例外失败

org.xml.sax.SAXParseException; schema_reference.4: Failed to read schema document 'maven:com.dg:XSD:jar::5.0.3.4!/**/*.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>.

当它们位于不同的目录中时,有没有办法在mvn依赖项中指定所有.xsd文件?

另外,xjc可以在一组.xsd文件中排序一个依赖关系树,其中一个.xsd文件依赖于另一个.xsd文件可能依赖于另一个。...

感谢。

1 个答案:

答案 0 :(得分:0)

  

当它们位于不同的目录中时,有没有办法在mvn依赖项中指定所有.xsd文件?

不,目前您必须指定单个架构文件。您不需要指定所有这些,只需指定“根”。 为此,请随意file an issue

  

另外,xjc可以在一组.xsd文件中排序一个依赖关系树,其中一个.xsd文件依赖于另一个.xsd文件可能依赖于另一个。...

是的,XJC递归地解析了模式依赖性。您可以编译大型深层架构林I'm doing this routinely