我正在尝试从 wsdl 文件生成 java 源,以与在 Java 17 /Spring Boot 3 上运行的项目集成。我正在使用以下 Maven 插件设置来实现此目的:
<plugin>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>4.0.1</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<packageName>io.test.lib</packageName>
<wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>
<wsdlFiles>
<wsdlFile>my_wsdl.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>/my_wsdl.wsdl</wsdlLocation>
<!-- <xjcArgs>-->
<!-- <xjcArg>-Xsetters</xjcArg>-->
<!-- </xjcArgs>-->
</configuration>
<!-- <dependencies>-->
<!-- <dependency>-->
<!-- <groupId>org.jvnet.jaxb2_commons</groupId>-->
<!-- <artifactId>jaxb2-basics</artifactId>-->
<!-- <version>1.11.1</version>-->
<!-- </dependency>-->
<!-- </dependencies>-->
</plugin>
除了生成的 java 文件不包含列表/集合类型参数的 setter 方法之外,这一切都很好。我之前在 Spring boot 2 中使用注释掉的插件来实现此目的,但这不再起作用。关于如何实现这一目标有什么想法吗?
该插件已更新为支持 jakarta 命名空间(JAXB 3 / JAXB 4)
初始存储库位于此处 新存储库位置此处(合并到 maven-jaxb2-plugin 位置,重命名为 jaxb-tools)
您可以遵循 迁移指南,因为我们对 groupId(统一化)和 artifactId 进行了一些更改(删除
jaxb2
参考)
更新后的插件参考配置应如下所示:
<plugin>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>4.0.1</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<packageName>io.test.lib</packageName>
<wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>
<wsdlFiles>
<wsdlFile>my_wsdl.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>/my_wsdl.wsdl</wsdlLocation>
<xjcArgs>
<xjcArg>-Xsetters</xjcArg>
</xjcArgs>
</configuration>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb</groupId>
<artifactId>jaxb-plugins</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</plugin>