我有一个詹金斯全球图书馆,我想记录它。我想使用groovydoc。
该库包含类和全局变量
src/<package-name>
vars
为类生成文档没有问题:
groovydoc -sourcepath src -d doc 'main.pipeline' '*.groovy'
但是如何为 vars 生成文档呢?
我有一个詹金斯全球图书馆,我想记录它。我想使用groovydoc。
该库包含类和全局变量
src/<package-name>
vars
为类生成文档没有问题:
groovydoc -sourcepath src -d doc 'main.pipeline' '*.groovy'
但是如何为 vars 生成文档呢?
为了确保在正确的包中报告所有内容,而不必枚举所有包,我使用了:
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/
。
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>
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
什么对我有用:
groovydoc -d docs -sourcepath "src;." my.package vars
将所有内容导出vars
为 DefaultPackage 并my.package
包含在src
文件夹中。
今天在工作中遇到了同样的问题,遗憾的是现在无法尝试我的解决方案,但尝试使用同时包含src
和vars
as的目录sourcepath
。然后你可以像这样在你的命令中引用你的src
和vars
子目录:
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 ...”工具:
Tools > Generate GroovyDoc...
Input directory
(同时包含src
and vars
)和任何路径Output directory
Start
Output directory