如何使用 gradle 从 WSDL 和 XSD 生成类,相当于 maven-jaxb2-plugin
我想将 Maven2 构建文件切换到 gradle。 使用 gradle 从 WSDL + XSD 生成 java 类似乎没有进一步记录,没有相应的 gradle 插件。 我在 Maven 中使用以下配置并搜索 gradle 的等效项。
<!-- plugin for generating the classes from the WSDL+XSD -->
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.7.3</version>
<executions>
<execution>
<id>app1-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>${project.build.directory}/wsdl/app1</schemaDirectory>
<schemaIncludes>
<include>*.xsd</include>
</schemaIncludes>
<generatePackage>org.app1.ws.generated</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/app1</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
<execution>
<id>app2-v1-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>src/main/resources/wsdl</schemaDirectory>
<schemaIncludes>
<include>v1/*.xsd</include>
</schemaIncludes>
<generatePackage>org.app2.ws.generated.v1</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/v1</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
<execution>
<id>app2-v2-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>src/main/resources/wsdl</schemaDirectory>
<schemaIncludes>
<include>v2/*.xsd</include>
</schemaIncludes>
<generatePackage>org.app2.ws.generated.v2</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/v2</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
</executions>
</plugin>
I want to switch my Maven2 build file to gradle.
Generating the java classes from WSDL + XSDs with gradle seems to be not documented further there is no gradle plugin for this.
I use the following configuration with maven and search the equivalent for gradle.
<!-- plugin for generating the classes from the WSDL+XSD -->
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.7.3</version>
<executions>
<execution>
<id>app1-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>${project.build.directory}/wsdl/app1</schemaDirectory>
<schemaIncludes>
<include>*.xsd</include>
</schemaIncludes>
<generatePackage>org.app1.ws.generated</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/app1</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
<execution>
<id>app2-v1-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>src/main/resources/wsdl</schemaDirectory>
<schemaIncludes>
<include>v1/*.xsd</include>
</schemaIncludes>
<generatePackage>org.app2.ws.generated.v1</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/v1</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
<execution>
<id>app2-v2-stub-generation</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>src/main/resources/wsdl</schemaDirectory>
<schemaIncludes>
<include>v2/*.xsd</include>
</schemaIncludes>
<generatePackage>org.app2.ws.generated.v2</generatePackage>
<generateDirectory>${project.build.directory}/generated-sources/v2</generateDirectory>
<strict>true</strict>
</configuration>
</execution>
</executions>
</plugin>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我解决了...
i solved it...
如果您找不到满足特定需求的 Gradle 插件(并且不想编写自己的插件),请寻找 Ant 任务。以下是 JAXB 的一个:XJC Ant 任务。
任何 Ant 任务都可以从 Gradle 中按原样使用(请参阅从 Gradle 中使用 Ant)。未来,Gradle还将支持Maven插件的执行。
If you can't find a Gradle plugin for a particular need (and don't want to write your own plugin), look out for an Ant task. Here is one for JAXB: XJC Ant Task.
Any Ant task can be used as-is from Gradle (see Using Ant from Gradle). In the future, Gradle will also support the execution of Maven plugins.
按照此处所述使用插件: https://github.com/nilsmagnus/wsdl2java
注意:截至2020 年,此建议不再适用,因为推荐的插件已停止使用,并且不再适用于较新版本的 Gradle。
Use the plugin as described here: https://github.com/nilsmagnus/wsdl2java
Note: as of 2020, this advice is no longer applicable, as the recommended plugin has been discontinued and no longer works with newer versions of Gradle.
我发现 xjc- Generation-gradle-plugin 易于使用,并且有据可查。
如果您将
.wsdl
文件放入src/main/schemas/xjc
中,那么您可以使用 build.gradle 中的此配置从中生成 Java 类em>:在此示例中,.wsdl 文件为 src/main/schemas/xjc/my.wsdl,并且类在
build/ generated-sources/main/xjc/com.example
目录。如果您的 WSDL 类型部分包含重复类型,那么您将看到如下所示的架构编译错误:
要避免这些错误,请将此设置添加到
xjcGeneration
任务:I found the xjc-generation-gradle-plugin to be easy to use and well-documented.
If you put your
.wsdl
file intosrc/main/schemas/xjc
then you can generate java classes from it with this config in your build.gradle:In this example the .wsdl file is
src/main/schemas/xjc/my.wsdl
and the classes are generated in thebuild/generated-sources/main/xjc/com.example
directory.If your WSDL types section contains repeated types then you will see schema compilation errors like this:
To avoid these errors add this setting to the
xjcGeneration
task: