Maven 通过 wsdl 生成从模式定义生成类的 generatePackage

huangapple go评论172阅读模式
英文:

Maven generatePackage for a wsdl generating classes from schema definition

问题

我正在使用Java14与SpringBoot。

我需要基于wsdl生成一些Java类。虽然生成了这些类,但它将所有生成的类都放在一个扁平的结构中,而不是放在wsdl中指定的包中。

如果有人能给予一些建议,我会非常感谢。

更多细节:

POM(您可以看到生成的包是com.travellinck.client.approval

  1. <build>
  2. <plugins>
  3. <!--
  4. <plugin>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-maven-plugin</artifactId>
  7. </plugin>
  8. -->
  9. <plugin>
  10. <groupId>org.jvnet.jaxb2.maven2</groupId>
  11. <artifactId>maven-jaxb2-plugin</artifactId>
  12. <version>0.13.2</version>
  13. <executions>
  14. <execution>
  15. <goals>
  16. <goal>generate</goal>
  17. </goals>
  18. </execution>
  19. </executions>
  20. <configuration>
  21. <generatePackage>com.travellinck.client.approval</generatePackage>
  22. <generateDirectory>${project.basedir}/src/main/java</generateDirectory>
  23. <schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory>
  24. <schemaIncludes>
  25. <include>*.wsdl</include>
  26. </schemaIncludes>
  27. </configuration>
  28. </plugin>
  29. </plugins>
  30. </build>

WSDL

  1. <!-- 由JAX-WS RI发布,网址为http://jax-ws.dev.java.net。 RI的版本是JAX-WS RI 2.2.5-b05。 -->
  2. <!-- 由JAX-WS RI生成,网址为http://jax-ws.dev.java.net。 RI的版本是JAX-WS RI 2.2.5-b05。 -->
  3. <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.travellinck.com/client/approval/service" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.travellinck.com/client/approval/service" name="ApprovalService">
  4. <!-- 更多内容,略去 -->
  5. </definitions>

这将在com.travellinck.client.approval包中生成模型类。

这是不正确的,我希望它的生成方式如下(这是从另一个使用Java7的应用程序生成的相同wsdl的模型类):

如您所见,这些类不是处于一个扁平的结构中,而是按照wsdl定义放置在其各自的包中:

例如:

  1. <xsd:schema>
  2. <xsd:import namespace="http://www.travellinck.com/client/approval/contact" schemaLocation="http://localhost:8088/approval?xsd=4"/>
  3. </xsd:schema>

这好像是忽略了/contact

(注意:我只提供了代码部分的翻译,不包括对问题的回答。)

英文:

I am using Java14 with SpringBoot.

I need to generate some Java classes based on a wsdl. It is generating, however, it puts all the generated classes in a flat structure and not in the packages specified in the wsdl.

If anyone can give some advise, I would appreciate it.

More details:

POM (you can see that the generated package is com.travellinck.client.approval)

  1. &lt;build&gt;
  2. &lt;plugins&gt;
  3. &lt;!-- &lt;plugin&gt;
  4. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  5. &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
  6. &lt;/plugin&gt; --&gt;
  7. &lt;plugin&gt;
  8. &lt;groupId&gt;org.jvnet.jaxb2.maven2&lt;/groupId&gt;
  9. &lt;artifactId&gt;maven-jaxb2-plugin&lt;/artifactId&gt;
  10. &lt;version&gt;0.13.2&lt;/version&gt;
  11. &lt;executions&gt;
  12. &lt;execution&gt;
  13. &lt;goals&gt;
  14. &lt;goal&gt;generate&lt;/goal&gt;
  15. &lt;/goals&gt;
  16. &lt;/execution&gt;
  17. &lt;/executions&gt;
  18. &lt;configuration&gt;
  19. &lt;generatePackage&gt;com.travellinck.client.approval&lt;/generatePackage&gt;
  20. &lt;generateDirectory&gt;${project.basedir}/src/main/java&lt;/generateDirectory&gt;
  21. &lt;schemaDirectory&gt;${project.basedir}/src/main/resources/wsdl&lt;/schemaDirectory&gt;
  22. &lt;schemaIncludes&gt;
  23. &lt;include&gt;*.wsdl&lt;/include&gt;
  24. &lt;/schemaIncludes&gt;
  25. &lt;/configuration&gt;
  26. &lt;/plugin&gt;
  27. &lt;/plugins&gt;
  28. &lt;/build&gt;

WSDL

  1. &lt;!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI&#39;s version is JAX-WS RI 2.2.5-b05 . --&gt;
  2. &lt;!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI&#39;s version is JAX-WS RI 2.2.5-b05 . --&gt;
  3. &lt;definitions xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot; xmlns:wsp=&quot;http://www.w3.org/ns/ws-policy&quot; xmlns:wsp1_2=&quot;http://schemas.xmlsoap.org/ws/2004/09/policy&quot; xmlns:wsam=&quot;http://www.w3.org/2007/05/addressing/metadata&quot; xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot; xmlns:tns=&quot;http://www.travellinck.com/client/approval/service&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns=&quot;http://schemas.xmlsoap.org/wsdl/&quot; targetNamespace=&quot;http://www.travellinck.com/client/approval/service&quot; name=&quot;ApprovalService&quot;&gt;
  4. &lt;types&gt;
  5. &lt;xsd:schema&gt;
  6. &lt;xsd:import namespace=&quot;http://www.travellinck.com/client/approval/service&quot; schemaLocation=&quot;http://localhost:8088/approval?xsd=1&quot;/&gt;
  7. &lt;/xsd:schema&gt;
  8. &lt;xsd:schema&gt;
  9. &lt;xsd:import namespace=&quot;http://www.travellinck.com/client/approval/evaluation/strategy&quot; schemaLocation=&quot;http://localhost:8088/approval?xsd=2&quot;/&gt;
  10. &lt;/xsd:schema&gt;
  11. &lt;xsd:schema&gt;
  12. &lt;xsd:import namespace=&quot;http://www.travellinck.com/client/approval/evaluation&quot; schemaLocation=&quot;http://localhost:8088/approval?xsd=3&quot;/&gt;
  13. &lt;/xsd:schema&gt;
  14. &lt;xsd:schema&gt;
  15. &lt;xsd:import namespace=&quot;http://www.travellinck.com/client/approval/contact&quot; schemaLocation=&quot;http://localhost:8088/approval?xsd=4&quot;/&gt;
  16. &lt;/xsd:schema&gt;
  17. &lt;xsd:schema&gt;
  18. &lt;xsd:import namespace=&quot;http://www.travellinck.com/client/approval&quot; schemaLocation=&quot;http://localhost:8088/approval?xsd=5&quot;/&gt;
  19. &lt;/xsd:schema&gt;
  20. &lt;/types&gt;
  21. &lt;message name=&quot;submitRequestForApproval&quot;&gt;
  22. &lt;part xmlns:ns1=&quot;http://www.travellinck.com/client/approval&quot; name=&quot;approvalRequest&quot; element=&quot;ns1:approvalRequest&quot;/&gt;
  23. &lt;/message&gt;
  24. &lt;message name=&quot;submitRequestForApprovalResponse&quot;&gt;
  25. &lt;part xmlns:ns2=&quot;http://www.travellinck.com/client/approval&quot; name=&quot;approvalResponse&quot; element=&quot;ns2:approvalResponse&quot;/&gt;
  26. &lt;/message&gt;
  27. &lt;message name=&quot;UnsupportedBusinessRequest&quot;&gt;
  28. &lt;part name=&quot;fault&quot; element=&quot;tns:unsupportedBusinessRequest&quot;/&gt;
  29. &lt;/message&gt;
  30. &lt;message name=&quot;UnsupportedSupportingDocument&quot;&gt;
  31. &lt;part name=&quot;fault&quot; element=&quot;tns:unsupportedSupportingDocument&quot;/&gt;
  32. &lt;/message&gt;
  33. &lt;message name=&quot;getApprovalState&quot;&gt;
  34. &lt;part xmlns:ns3=&quot;http://www.travellinck.com/client/approval&quot; name=&quot;getApprovalStateRequest&quot; element=&quot;ns3:getApprovalStateRequest&quot;/&gt;
  35. &lt;/message&gt;
  36. &lt;message name=&quot;getApprovalStateResponse&quot;&gt;
  37. &lt;part xmlns:ns4=&quot;http://www.travellinck.com/client/approval&quot; name=&quot;getApprovalStateResponse&quot; element=&quot;ns4:getApprovalStateResponse&quot;/&gt;
  38. &lt;/message&gt;
  39. &lt;message name=&quot;UnknownApprovalRequest&quot;&gt;
  40. &lt;part name=&quot;fault&quot; element=&quot;tns:unknownApprovalRequest&quot;/&gt;
  41. &lt;/message&gt;
  42. &lt;message name=&quot;withdrawRequestForApproval&quot;&gt;
  43. &lt;part xmlns:ns5=&quot;http://www.travellinck.com/client/approval&quot; name=&quot;withdrawApprovalRequest&quot; element=&quot;ns5:withdrawApprovalRequest&quot;/&gt;
  44. &lt;/message&gt;
  45. &lt;message name=&quot;withdrawRequestForApprovalResponse&quot;&gt;
  46. &lt;part xmlns:ns6=&quot;http://www.travellinck.com/client/approval&quot; name=&quot;withdrawApprovalResponse&quot; element=&quot;ns6:withdrawApprovalResponse&quot;/&gt;
  47. &lt;/message&gt;
  48. &lt;message name=&quot;InvalidRequest&quot;&gt;
  49. &lt;part name=&quot;fault&quot; element=&quot;tns:invalidRequest&quot;/&gt;
  50. &lt;/message&gt;
  51. &lt;message name=&quot;RequestNoLongerInProgress&quot;&gt;
  52. &lt;part name=&quot;fault&quot; element=&quot;tns:requestNoLongerInProgress&quot;/&gt;
  53. &lt;/message&gt;
  54. &lt;portType name=&quot;Approval&quot;&gt;
  55. &lt;operation name=&quot;submitRequestForApproval&quot;&gt;
  56. &lt;input wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/submitRequestForApprovalRequest&quot; message=&quot;tns:submitRequestForApproval&quot;/&gt;
  57. &lt;output wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/submitRequestForApprovalResponse&quot; message=&quot;tns:submitRequestForApprovalResponse&quot;/&gt;
  58. &lt;fault message=&quot;tns:UnsupportedBusinessRequest&quot; name=&quot;UnsupportedBusinessRequest&quot; wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/submitRequestForApproval/Fault/UnsupportedBusinessRequest&quot;/&gt;
  59. &lt;fault message=&quot;tns:UnsupportedSupportingDocument&quot; name=&quot;UnsupportedSupportingDocument&quot; wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/submitRequestForApproval/Fault/UnsupportedSupportingDocument&quot;/&gt;
  60. &lt;/operation&gt;
  61. &lt;operation name=&quot;getApprovalState&quot;&gt;
  62. &lt;input wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/getApprovalStateRequest&quot; message=&quot;tns:getApprovalState&quot;/&gt;
  63. &lt;output wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/getApprovalStateResponse&quot; message=&quot;tns:getApprovalStateResponse&quot;/&gt;
  64. &lt;fault message=&quot;tns:UnknownApprovalRequest&quot; name=&quot;UnknownApprovalRequest&quot; wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/getApprovalState/Fault/UnknownApprovalRequest&quot;/&gt;
  65. &lt;/operation&gt;
  66. &lt;operation name=&quot;withdrawRequestForApproval&quot;&gt;
  67. &lt;input wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/withdrawRequestForApprovalRequest&quot; message=&quot;tns:withdrawRequestForApproval&quot;/&gt;
  68. &lt;output wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/withdrawRequestForApprovalResponse&quot; message=&quot;tns:withdrawRequestForApprovalResponse&quot;/&gt;
  69. &lt;fault message=&quot;tns:InvalidRequest&quot; name=&quot;InvalidRequest&quot; wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/withdrawRequestForApproval/Fault/InvalidRequest&quot;/&gt;
  70. &lt;fault message=&quot;tns:RequestNoLongerInProgress&quot; name=&quot;RequestNoLongerInProgress&quot; wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/withdrawRequestForApproval/Fault/RequestNoLongerInProgress&quot;/&gt;
  71. &lt;fault message=&quot;tns:UnknownApprovalRequest&quot; name=&quot;UnknownApprovalRequest&quot; wsam:Action=&quot;http://www.travellinck.com/client/approval/service/Approval/withdrawRequestForApproval/Fault/UnknownApprovalRequest&quot;/&gt;
  72. &lt;/operation&gt;
  73. &lt;/portType&gt;
  74. &lt;binding name=&quot;ApprovalPortBinding&quot; type=&quot;tns:Approval&quot;&gt;
  75. &lt;soap:binding transport=&quot;http://schemas.xmlsoap.org/soap/http&quot; style=&quot;document&quot;/&gt;
  76. &lt;operation name=&quot;submitRequestForApproval&quot;&gt;
  77. &lt;soap:operation soapAction=&quot;&quot;/&gt;
  78. &lt;input&gt;
  79. &lt;soap:body use=&quot;literal&quot;/&gt;
  80. &lt;/input&gt;
  81. &lt;output&gt;
  82. &lt;soap:body use=&quot;literal&quot;/&gt;
  83. &lt;/output&gt;
  84. &lt;fault name=&quot;UnsupportedBusinessRequest&quot;&gt;
  85. &lt;soap:fault name=&quot;UnsupportedBusinessRequest&quot; use=&quot;literal&quot;/&gt;
  86. &lt;/fault&gt;
  87. &lt;fault name=&quot;UnsupportedSupportingDocument&quot;&gt;
  88. &lt;soap:fault name=&quot;UnsupportedSupportingDocument&quot; use=&quot;literal&quot;/&gt;
  89. &lt;/fault&gt;
  90. &lt;/operation&gt;
  91. &lt;operation name=&quot;getApprovalState&quot;&gt;
  92. &lt;soap:operation soapAction=&quot;&quot;/&gt;
  93. &lt;input&gt;
  94. &lt;soap:body use=&quot;literal&quot;/&gt;
  95. &lt;/input&gt;
  96. &lt;output&gt;
  97. &lt;soap:body use=&quot;literal&quot;/&gt;
  98. &lt;/output&gt;
  99. &lt;fault name=&quot;UnknownApprovalRequest&quot;&gt;
  100. &lt;soap:fault name=&quot;UnknownApprovalRequest&quot; use=&quot;literal&quot;/&gt;
  101. &lt;/fault&gt;
  102. &lt;/operation&gt;
  103. &lt;operation name=&quot;withdrawRequestForApproval&quot;&gt;
  104. &lt;soap:operation soapAction=&quot;&quot;/&gt;
  105. &lt;input&gt;
  106. &lt;soap:body use=&quot;literal&quot;/&gt;
  107. &lt;/input&gt;
  108. &lt;output&gt;
  109. &lt;soap:body use=&quot;literal&quot;/&gt;
  110. &lt;/output&gt;
  111. &lt;fault name=&quot;InvalidRequest&quot;&gt;
  112. &lt;soap:fault name=&quot;InvalidRequest&quot; use=&quot;literal&quot;/&gt;
  113. &lt;/fault&gt;
  114. &lt;fault name=&quot;RequestNoLongerInProgress&quot;&gt;
  115. &lt;soap:fault name=&quot;RequestNoLongerInProgress&quot; use=&quot;literal&quot;/&gt;
  116. &lt;/fault&gt;
  117. &lt;fault name=&quot;UnknownApprovalRequest&quot;&gt;
  118. &lt;soap:fault name=&quot;UnknownApprovalRequest&quot; use=&quot;literal&quot;/&gt;
  119. &lt;/fault&gt;
  120. &lt;/operation&gt;
  121. &lt;/binding&gt;
  122. &lt;service name=&quot;ApprovalService&quot;&gt;
  123. &lt;port name=&quot;ApprovalPort&quot; binding=&quot;tns:ApprovalPortBinding&quot;&gt;
  124. &lt;soap:address location=&quot;http://localhost:8088/approval&quot;/&gt;
  125. &lt;/port&gt;
  126. &lt;/service&gt;
  127. &lt;/definitions&gt;

This generates the model classes in the com.travellinck.client.approval package.

Maven 通过 wsdl 生成从模式定义生成类的 generatePackage

This is incorrect, I would expect it to rather generate them as follows (This was taken from another application using Java7 that generated the model classes from the same wsdl):

Maven 通过 wsdl 生成从模式定义生成类的 generatePackage

As you can see, these classes are not in a flat structure, but rather in their packages according to the wsdl definition:

e.g.

  1. &lt;xsd:schema&gt;
  2. &lt;xsd:import namespace=&quot;http://www.travellinck.com/client/approval/contact&quot; schemaLocation=&quot;http://localhost:8088/approval?xsd=4&quot;/&gt;
  3. &lt;/xsd:schema&gt;

It's as if it is ignoring the /contact.

答案1

得分: 2

我通过使用apache.cxf来修复了这个问题。

  1. <plugin>
  2. <groupId>org.apache.cxf</groupId>
  3. <artifactId>cxf-codegen-plugin</artifactId>
  4. <version>3.3.7</version>
  5. <executions>
  6. <execution>
  7. <id>generate-sources</id>
  8. <phase>generate-sources</phase>
  9. <configuration>
  10. <sourceRoot>${project.basedir}/src/main/java</sourceRoot>
  11. <wsdlOptions>
  12. <wsdlOption>
  13. <wsdl>${project.basedir}/src/main/resources/wsdl/approval.wsdl</wsdl>
  14. </wsdlOption>
  15. </wsdlOptions>
  16. </configuration>
  17. <goals>
  18. <goal>wsdl2java</goal>
  19. </goals>
  20. </execution>
  21. </executions>
  22. </plugin>
英文:

I fixed this by rather using apache.cxf

  1. &lt;plugin&gt;
  2. &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt;
  3. &lt;artifactId&gt;cxf-codegen-plugin&lt;/artifactId&gt;
  4. &lt;version&gt;3.3.7&lt;/version&gt;
  5. &lt;executions&gt;
  6. &lt;execution&gt;
  7. &lt;id&gt;generate-sources&lt;/id&gt;
  8. &lt;phase&gt;generate-sources&lt;/phase&gt;
  9. &lt;configuration&gt;
  10. &lt;sourceRoot&gt;${project.basedir}/src/main/java&lt;/sourceRoot&gt;
  11. &lt;wsdlOptions&gt;
  12. &lt;wsdlOption&gt;
  13. &lt;wsdl&gt;${project.basedir}/src/main/resources/wsdl/approval.wsdl&lt;/wsdl&gt;
  14. &lt;/wsdlOption&gt;
  15. &lt;/wsdlOptions&gt;
  16. &lt;/configuration&gt;
  17. &lt;goals&gt;
  18. &lt;goal&gt;wsdl2java&lt;/goal&gt;
  19. &lt;/goals&gt;
  20. &lt;/execution&gt;
  21. &lt;/executions&gt;
  22. &lt;/plugin&gt;

huangapple
  • 本文由 发表于 2020年6月29日 18:26:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/62636121.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定