我在多模块maven项目上使用Enunciate。我使用版本1.28,我只是将其用于SOAP服务的文档目的。
这适用于所有服务。 必须在@WebService注释中声明targetNamespace和endpointInterface,一切正常。我用wsdl / wadl / xsd / html输出得到了我的zip。
通过输出文件识别并发布所有javadoc。
但是......如果没有,我不会写在这里......
所有数据模型文件都不会!我尝试了以下选项:
<api-import pattern="package.model.**" />
<modules>
<spring-app disabled="true" />
<docs docsDir="/docs" title="Web Service API" copyright="ME" />
<!-- Disable all the client generation tools -->
<basic-app disabled="true" />
<c disabled="true" />
<csharp disabled="true" />
<java-client disabled="true" />
<jaxws-client disabled="true" />
<jaxws-ri disabled="true" />
<jaxws-support disabled="true" />
<jersey disabled="true" />
<obj-c disabled="true" />
<xml forceExampleJson="true" />
<jaxws disabled="true" />
<amf disabled="true" />
</modules>
模块未包含在webarchive中,但声明为依赖项:
<dependency>
<groupId>package.model</groupId>
<artifactId>model</artifactId>
<version>${project.parent.version}</version>
<scope>provided</scope>
</dependency>
数据模型中的DTO和ENUMS通常提供:
@XmlType(namespace = "https://package/DTO")
Javadoc关于类和属性。
但是我也尝试过Javadoc的getter和setter。
我甚至在项目的示例实现中尝试了一些xml注释:
@javax.xml.bind.annotation.XmlType(name = "socialGroup", namespace = "http://api.ifyouwannabecool.com/link")
@javax.xml.bind.annotation.XmlRootElement(name = "socialGroup", namespace = "http://api.ifyouwannabecool.com/link")
没有成功。 javadoc不会像在SOAP服务中一样包含在xsd / wsdl / html文件中。
你有什么想法吗?
答案 0 :(得分:0)
如果类在不同的Maven模块中,正如您在依赖项中声明的那样,则必须明确告诉Enunciate&#34; import&#34;它们是为了获得JavaDoc。
因此,让我们假装您的模型类位于名为&#34; org.mycompany.widgets.model&#34;的程序包中。并在名为&#34; org.mycompany.gadgets.model&#34;的软件包中。告诉Enunciate导入这样的:
<enunciate ...>
...
<api-import pattern="org.mycompany.gadgets.model.**"/>
<api-import pattern="org.mycompany.widgets.model.**"/>
...
答案 1 :(得分:0)
请在类的顶部添加 @XmlRootElement ,以便enunciate使它们出现在数据模型文档中。
Example : @XmlRootElement public class Foo{ .... }
答案 2 :(得分:0)
我认为问题是<scope>provided</scope>
。如果类路径中不存在类,则enunciate将无法找到它们。将其更改为<scope>compile</scope>
以及@XmlRootElement
注释,它应该可以正常工作。