使用 jaxb2-maven-plugin 从 WSDL 生成类

2023-12-23

我在配置时遇到问题jaxb2-maven-plugin从 WSDL 和多个 XSD 文件生成 Java 类,这些文件都存在于同一标准目录中src/main/xsd.

如何将 jaxb2 maven 插件与内联 XSD 一起使用? https://stackoverflow.com/questions/14315651/how-to-use-jaxb2-maven-plugin-with-inline-xsd/相关仅在于答案正确地建议使用wsdl插件配置中的参数,但这个问题实际上与内联 XSD 有关,而我的 XSD 是外部的。

列出了插件目标参数here http://mojo.codehaus.org/jaxb2-maven-plugin/xjc-mojo.html.

我的插件配置是:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <id>xjc</id>
            <goals>
                <goal>xjc</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <packageName>com.x.y.model</packageName>
        <wsdl>true</wsdl>
    </configuration>
</plugin>

我正在测试这个mvn -X clean jaxb2:xjc但插件忽略了.wsdl如调试输出中所示

[DEBUG] accept false for file c:\projects\foo\src\main\xsd\service.wsdl
[DEBUG] accept true for file c:\projects\foo\src\main\xsd\datatypes.xsd
[DEBUG] accept true for file c:\projects\foo\src\main\xsd\more-datatypes.xsd

通过检查传递给 JAXB XJC 的参数的 Maven 调试输出(以及一些试验和错误),我发现我需要向插件提供另外 2 个配置参数。

这会停止插件扫描 XSD 文件并仅使用.wsdl作为源。 XSD 文件包含在 WSDL 中,如下所示<xsd:include schemaLocation="datatypes.xsd" />例如,指令在本地解析,导致 WSDL 和 XSD 中的所有类型生成为 Java 类。

对我有用的配置部分是:

<configuration>
    <packageName>com.x.y.model</packageName>
    <wsdl>true</wsdl>
    <xmlschema>false</xmlschema>
    <schemaFiles>service.wsdl</schemaFiles>
</configuration>

如果没有<xmlschema>false</xmlschema>Maven 错误:

org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目 foo 上执行目标 org.codehaus.mojo:jaxb2-maven-plugin:1.5:xjc (default-cli):无法处理架构: /c:/projects/foo/src/main/xsd/service.wsdl

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jaxb2-maven-plugin 从 WSDL 生成类 的相关文章

随机推荐