无法使用jaxb2-maven-plugin将WSDL解析为不同的包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用jaxb2-maven-plugin将WSDL解析为不同的包相关的知识,希望对你有一定的参考价值。

我已经配置了我的jaxb2-maven-plugin来从相同位置的不同文件夹中获取WSDL,并将它们分析到不同的包中,因为它们提供的功能不同。在运行mvn install时,只处理第一个wsdl而忽略第二个wsdl。在将版本从1.5更改为1.6时,仅处理第二个WSDL并忽略第一个WSDL,这看起来有点奇怪。我希望它们都能正确处理和打包,请建议语法/插件中需要的任何更改。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
    <execution>
        <id>xjc-rules</id>
        <goals>
            <goal>xjc</goal>
        </goals>
        <configuration>
            <schemaDirectory>src/main/resources/wsdl</schemaDirectory>
            <schemaFiles>*.wsdl</schemaFiles>
            <xmlschema>false</xmlschema>
            <wsdl>true</wsdl>
            <args>-wsdl</args>
            <packageName>com.baplc.ngs.dealing.rules</packageName>
        </configuration>
    </execution>
    <execution>
        <id>xjc-infra</id>
        <goals>
            <goal>xjc</goal>
        </goals>
        <configuration>
            <schemaDirectory>src/main/resources/wsdl/infracloud</schemaDirectory>
            <schemaFiles>*.wsdl</schemaFiles>
            <xmlschema>false</xmlschema>
            <wsdl>true</wsdl>
            <args>-wsdl</args>
            <packageName>com.baplc.ngs.dealing.informatica.cloud</packageName>
        </configuration>
    </execution>
</executions>

答案

您应该在所有configurations的execution中包含以下行:

<clearOutputDir>false</clearOutputDir>

(从技术上讲,你只需要在第二次执行中包含它,但我喜欢让配置相似。)

默认情况下,参数clearOutputDir设置为true,并将删除outputDirectory的内容(默认为${project.build.directory}/generated-sources/jaxb)。

clearOutputDir设置为true时,将在第一次执行时处理第一个WSDL文件。在第二次执行中,清除输出目录(从而删除首次执行的生成文件)并处理第二个文件。因此,您只能看到第二个文件中生成的类。

有关更多信息,请参阅documentation

以上是关于无法使用jaxb2-maven-plugin将WSDL解析为不同的包的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jaxb2-maven-plugin 2.x 从 WSDL 生成 Java 类?

如何配置 IntelliJ IDEA 和/或 Maven 以使用 jaxb2-maven-plugin 生成的 Java 源代码自动添加目录?

在jaxb2-maven-plugin中为schemagen添加显式源目录

无法将 ws 库添加到 Angular 项目

玩框架2.6 ws无法解决

ws 无法热替换的问题