从CXF 2.7.5运行wsdl2java
以获取类似
<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
成员生成Javadoc。
这是出乎意料的,我没有看到文档中提到的标志打开/关闭它?
答案 0 :(得分:9)
不幸的是,没有什么可以轻松解决它。 wsdl2java
使用引擎盖下的xjc来生成类。为此提出了一个老问题(JAXB-172)。你可以投票支持它。没有xjc插件可以解决这个问题。 How to make generated classes contain Javadoc from XML Schema documentation中提到了有关此问题的更多信息。
如前所述,如果您可以控制WSDL / XSD文件,则可以使用嵌入式自定义绑定(jxb:javadoc)替换xsd:documentation。要实现这一点,您应该声明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绑定来做同样的事情,但它似乎有太大的开销。
如果可以的话,请总结一下upvote提到的问题。也许有一天有人认为现在是实施该功能的时候了。
修改强>
我觉得很奇怪,一个人不能使用XJC插件来执行这样的任务(其中一个评论来自上述问题)我决定尝试编写这样的插件。
结果可以在这里找到: https://github.com/destin/xjc-javadoc-plugin
目前,它仅向复杂类型的字段(不是getter或setter)添加注释。我真的很感激任何改进的建议。当我认为它足够稳定时,我会尝试将它贡献给CXF项目,以便任何人都可以轻松使用它。
答案 1 :(得分:0)
关于xjc-javadoc-plugin。如项目页面上所写:“插件已合并到Apache CXF XJC Utils中”。 尽管第https://cxf.apache.org/xjc-utils.html页上没有任何内容。但是它在那里并用作“基于xsd:documentation元素添加javadocs”。对于使用“来自Apache”的插件:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.3.5</version>
<executions>
<execution>
<!-- ... -->
<configuration>
<wsdlOptions>
<wsdlOption>
<!-- ... -->
<extraargs>
<extraarg>-xjc-Xjavadoc</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.cxf.xjcplugins</groupId>
<artifactId>cxf-xjc-javadoc</artifactId>
<version>3.3.1</version>
</dependency>
</dependencies>
</plugin>
或
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-javadoc:3.3.1</extension>
</extensions>
</configuration>
<executions>
<execution>
<!-- ... -->
<configuration>
<!-- ... -->
<xsdOptions>
<xsdOption>
<!-- ... -->
<extensionArgs>-Xjavadoc</extensionArgs>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>