gpt4 book ai didi

CXF wsdl2java 不为成员生成 Javadoc

转载 作者:行者123 更新时间:2023-12-04 11:25:30 25 4
gpt4 key购买 nike

运行wsdl2java从 CXF 2.7.5 开始,例如

<xsd:complexType name="baseTaxParametersEnhanced">
<xsd:annotation>
<xsd:documentation>
Some type comment.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="municipality" type="xsd:string">
<xsd:annotation>
<xsd:documentation>
Some member comment.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="zip" type="xsd:string" />

BaseTaxParametersEnhanced 生成 Javadoc类,但不适用于 municipality成员。

这是出乎意料的,我没有看到文档中提到打开/关闭它的标志?

最佳答案

不幸的是,几乎没有什么可以轻松修复它。 wsdl2java在底层使用 xjc 来生成类。为此提出了一个老问题( JAXB-172 )。你可以投票给它。没有 xjc 插件可以解决这个问题。 How to make generated classes contain Javadoc from XML Schema documentation 中提到了有关此问题的更多信息.

如那里所述,如果您可以控制 WSDL/XSD 文件,则可以将 xsd:documentation 替换为嵌入式自定义绑定(bind) (jxb:javadoc)。为此,您应该声明 jxb 命名空间,例如:

<xsd:schema ... xmlns:jxb="http://java.sun.com/xml/ns/jaxb">

并更改您的类型声明:
<xsd:complexType name="baseTaxParametersEnhanced">
<xsd:annotation>
<xsd:appinfo>
<jxb:class>
<jxb:javadoc>Some type comment.</jxb:javadoc>
</jxb:class>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="municipality" type="xsd:string">
<xsd:annotation>
<xsd:appinfo>
<jxb:property>
<jxb:javadoc>Some member comment.</jxb:javadoc>
</jxb:property>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="zip" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>

这个解决方案的问题是这些注释不会被其他 WSDL/XSD 工具识别。

如果您无法控制 WSDL/XSD,则可以使用外部 JAXB 绑定(bind)来做同样的事情,但它似乎开销太大。

如果可以的话,请总结一下提到的问题。也许有一天有人决定是时候实现该功能了。

编辑

因为我认为不能使用 XJC 插件来执行这样的任务很奇怪(提到的问题中的一条评论指出),所以我决定尝试编写这样的插件。

结果可以在这里找到:
https://github.com/destin/xjc-javadoc-plugin

目前它仅向复杂类型的字段(不是 getter 或 setter)添加注释。如果您有任何改进建议,我将不胜感激。当我认为它足够稳定时,我会尝试将它贡献给 CXF 项目,以便任何人都可以轻松使用它。

关于CXF wsdl2java 不为成员生成 Javadoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19444064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com