3

我正在使用 Enunciate 在 Maven 项目中生成 REST API 文档。

该工件maven-enunciate-plugin生成 Web API 文档,但它忽略了 Spring 注释,例如:(@Secured来自 spring-security)

我尝试使用支持 spring 的 maven artifact 生成文档maven-enunciate-spring-plugin,但它甚至不生成 Web API 文档。

有没有办法配置 enunciate 或使用另一个 enunciate maven 插件,以便在 Enunciate 生成的文档中识别和提及来自 Spring 的注释?

4

2 回答 2

4

没关系,我设法通过“将自定义皮肤应用于 Enunctiate 的文档”(http://docs.codehaus.org/display/ENUNCIATE/Applying+a+Custom+Skin+to+Enunciate%27s+Documentation)解决了这个问题

我修改docs.xml.fmt了 以及docs.fmtenunciate-docs以便识别 '@Secured' 注释。

不幸的是,对于docs.xml.fmt,没有像我们对docs.fmt. 所以,我不得不用这些修改过的文件打包自己。

我提到了如何处理@Deprecated (java.lang.Deprecated) 并遵循类似的方法。

docs.fmt文件中,将此块添加到类似功能块的下方isDeprecated

[#function isSecured element]
  [#return (getTagValues(element, "secured")?size > 0)/]
[/#function]

现在,

就在这个块下面:

[#if isDeprecated(resource)]
 <p class="alert">This resource has been deprecated.</p>
[/#if]

添加另一个 if 块

[#if isSecured(resource)]
  <p class="note">This resource is available only to these roles:  
  [#assign securedTags = getTagValues(resource, "secured") /]
  [#if securedTags?size > 0]
    ${securedTags[0]}
  [/#if]

  [#list resource.parent.annotations as tag]
      ${tag}
  [/#list]
  </p>
[/#if]

现在,在docs.xml.fmt文件中,就在下面:

[#if resource.parent.annotations["java.lang.Deprecated"]??]
  <tag name="deprecated"/>
[/#if]

添加以下块

[#if resource.parent.annotations["org.springframework.security.access.annotation.Secured"]??]
  <tag name="secured">

    [#list resource.parent.annotations["org.springframework.security.access.annotation.Secured"]["value"] as roles]
      <![CDATA[${roles}]]> 
    [/#list]

  </tag>
[/#if]
于 2013-07-17T08:22:47.897 回答
1

恐怕不是。尽管可以添加该功能,但 Enunciate 无法识别那些 Spring 注释。欢迎您提出请求

maven-enunciate-spring-plugin仅用于在 Spring 中将 Enunciate 连接到后端运行时,它不包括您要询问的功能。)

于 2013-07-06T20:12:34.380 回答