6

我有一个詹金斯全球图书馆,我想记录它。我想使用groovydoc。

该库包含类和全局变量

src/<package-name>
vars

为类生成文档没有问题:

groovydoc -sourcepath src -d doc 'main.pipeline' '*.groovy'

但是如何为 vars 生成文档呢?

4

5 回答 5

2

为了确保在正确的包中报告所有内容,而不必枚举所有包,我使用了:

mkdir -p doc/

groovydoc -d doc -private -nomainforscripts -sourcepath src:vars \
    $(find src/ vars/ -name \*.groovy -printf '%P\n')

这个咒语说服了 Groovydoc 获得正确的包,而不需要我繁琐地列出它们,这是主要的挑战。

如果您find没有-printf,请替换-printf '%P\n'| cut -d '/' -f 2-. 效果是一样的;去掉前导src/vars/

于 2018-11-09T15:32:20.347 回答
1

Maven解决方案:

<plugin>
    <groupId>org.codehaus.gmavenplus</groupId>
    <artifactId>gmavenplus-plugin</artifactId>
    <version>1.7.1</version>
    <executions>
      <execution>
        <goals>
          <goal>addSources</goal>
          <goal>addTestSources</goal>
          <goal>compile</goal>
          <goal>compileTests</goal>
          <goal>groovydoc</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <sources>
        <source>
          <directory>${project.basedir}/vars</directory>
          <includes>
            <include>**/*.groovy</include>
          </includes>
        </source>
        <source>
          <directory>${project.basedir}/src</directory>
          <includes>
            <include>**/*.groovy</include>
          </includes>
        </source>
      </sources>
      <testSources>
        <testSource>
          <directory>${project.basedir}/test</directory>
          <includes>
            <include>**/*.groovy</include>
          </includes>
        </testSource>
      </testSources>
      <docTitle>Jenkins Shared Libs</docTitle>
      <header>${titre}</header>
      <footer>${titre}</footer>
      <windowTitle>${titre}</windowTitle>
    </configuration>
  </plugin>
于 2019-08-30T15:55:47.193 回答
0

i was facing the same issue. i just needed an overview with parameters. I know there is lots of space for improvement, but works for my usecase:

import groovy.io.FileType
import java.util.regex.*;

class DocGenerator {
    String run(String root_path) {


        def list = []

        def dir = new File(root_path)
        dir.eachFileRecurse(FileType.FILES) { file ->
            if (file.name.contains("groovy"))
                list << file
        }

        String output = "| Method | Doc |\n"
        output += "| ------ | ------ |\n"

        list.each {
            output += "| ${it.name.replace(".groovy","")} | ${getComment(it.text.replace("\r\n","<br>"))} |\n"
        }

        println(output)
        return output
    }

    String getComment(String txt) {


        String re1 = "(\\/\\*[\\d\\D]*?\\*\\/)";    // C Comment 1
        String re2 = ".*?";    // Non-greedy match on filler
        String re3 = "def";    // Word 1
        String re4 = ".*?";    // Non-greedy match on filler
        String re5 = "call";    // Word 2

        Pattern p = Pattern.compile(re1 + re2 + re3 + re4 + re5, Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
        Matcher m = p.matcher(txt);
        if (m.find()) {
            String ccomment1 = m.group(1);

            return m.group(1)
        }

    }

}

app = new DocGenerator()
app.run "C:\\Git\\JenkinsSharedLibrary\\vars"

My output was intended to be added to an readme.md. But i think you get the point

于 2018-06-29T14:05:16.597 回答
0

什么对我有用:

groovydoc -d docs -sourcepath "src;." my.package vars

将所有内容导出vars为 DefaultPackage 并my.package包含在src文件夹中。

于 2018-10-11T12:51:28.433 回答
0

今天在工作中遇到了同样的问题,遗憾的是现在无法尝试我的解决方案,但尝试使用同时包含srcvarsas的目录sourcepath。然后你可以像这样在你的命令中引用你的srcvars子目录:

groovydoc -sourcepath [PATH_TO_YOUR_LIB] -d doc src\ vars\

如果这不起作用,请尝试像这样单独引用每个包:

groovydoc -sourcepath [PATH_TO_YOUR_LIB] -d doc src\org.foo.some_package src\org.foo.some_other_package vars\

或者,或者作为一种解决方法,您可以使用 IntelliJ IDE 及其“生成 GroovyDoc ...”工具:

  1. 启动 IntelliJ 并打开任何 Groovy 项目(如果没有现有项目,则创建一个新项目)
  2. 从菜单栏Tools > Generate GroovyDoc...
  3. 选择包含 jenkins 管道库的源路径Input directory(同时包含srcand vars)和任何路径Output directory
  4. Start
  5. GroovyDoc 应该在指定的Output directory
于 2017-07-06T18:28:34.330 回答