代码之家  ›  专栏  ›  技术社区  ›  Bart Schuller

如何在Groovy/Grails中记录标签库(或一般的闭包)

  •  11
  • Bart Schuller  · 技术社区  · 16 年前

    我正在编写我的第一个标签库作为插件的一部分,我想记录它。添加javadoc(有没有地方记录groovydoc,或者它真的是同一件事?)似乎对非方法不起作用。

    具体来说,如何在以下文件中记录def mytag:

    /**
     * This doc shows up
     */
    class MyTagLib {
      static namespace = "myns"
    
      /**
       * This doc does not show up, but I'd like to document attrs.
       */
      def mytag = {attrs ->
        out << "something"
      }
    }
    

    由于Grails中的许多内容都是使用闭包指定的,如果真的无法记录它们,那么我们似乎遇到了问题。我应该使用其他涉及单独文档文件的解决方案吗?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Bart Schuller    16 年前

    我刚刚阅读了新的Groovy 1.6 RC,这让我想到了Jira,它有几个关于groovydoc的开放错误,包括一个专门关于文档的错误 fields and properties ,仍然开放。最新的评论谈到了trunk中的部分实现,所以我必须检查一下。

    这样就澄清了现状。与此同时,我强迫自己将我的标签库发布到野外,并用常规的HTML页面(维基生成)记录下来。对此有一些话要说,因为如果在大量自动生成的数据中发现唯一包含标语详细信息的文档,我实际上会被推迟。

        2
  •  0
  •   Rob Hruska MegalomanINA    16 年前

    你的问题让我很好奇,我四处看看。似乎没有好的方法来做到这一点。

    我认为目前最理想的方法是在类级javadoc头中记录可用标签及其参数。至少这样,它们会出现在你的最终API规范中,让人们看到。

    我注意到有一些关于groovydoc的讨论,但我似乎找不到任何完全官方的东西,尤其是在Grails的使用方面。我能够用以下代码让groovydoc在我的grails 1.0.3应用程序上工作,但在我添加标签库闭包时,它没有收到任何文档注释。

    <property environment="env"/>
    <target name="groovydoc">
      <taskdef name="groovydoc" classname="org.codehaus.groovy.ant.Groovydoc">
        <classpath>
          <path path="${env.GRAILS_HOME}/lib/groovy-all-1.5.6.jar"/>
        </classpath>
      </taskdef>
      <mkdir dir="docs/gapi"/>
      <groovydoc destdir="docs/gapi" sourcepath="grails-app" use="true" windowtitle="groovydoc" private="true"/>
    </target>
    

    如果你把groovydoc弄乱的时间足够长,你可以按摩它,让它与标签库一起工作,或者如果你有时间尝试,它也可以与Grails 1.1 beta一起工作。