我有jenkins global library,我想记录它。我想使用groovydoc。
该库包含类和全局变量
src/<package-name>
vars
为类生成文档没有问题:
groovydoc -sourcepath src -d doc 'main.pipeline' '*.groovy'
但是如何为变量生成文档呢?
答案 0 :(得分: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>
答案 1 :(得分:0)
今天在工作中遇到同样的问题,遗憾的是现在无法尝试我的解决方案,但请尝试使用包含function getObject(str) {
var temp = document.createElement("div")
temp.innerHTML = str
var data = {
type: undefined,
time: undefined
};
var elems = temp.getElementsByTagName("p")
var match = elems[0].textContent.match(/::([^\/]+)\/(.+)/);
if (match) {
data.type = match[1]
data.time = match[2]
elems[0].remove()
}
data.content = temp.innerHTML;
console.log(data)
return data
}
var str1 = "<p>::type/12</p><p>Some content</p><p>Some more content</p>"
var str2 = "<p>Some content</p><p>Some more content</p>"
getObject(str1)
getObject(str2)
和src
的目录作为vars
。然后,您可以在命令中引用sourcepath
和src
子目录,如下所示:
vars
如果这不起作用,请尝试单独引用每个包,如下所示:
groovydoc -sourcepath [PATH_TO_YOUR_LIB] -d doc src\ vars\
或者,或者作为变通方法,您可以使用IntelliJ IDE及其“Generate GroovyDoc ...” - 工具:
groovydoc -sourcepath [PATH_TO_YOUR_LIB] -d doc src\org.foo.some_package src\org.foo.some_other_package vars\
Tools > Generate GroovyDoc...
(包含Input directory
和src
),任何路径为vars
Output directory
Start
答案 2 :(得分:0)
我面临着同样的问题。我只需要概述一下参数。我知道有很多改进的空间,但是适用于我的用例:
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"
我的输出旨在添加到 readme.md 中。但是我想你明白了
答案 3 :(得分:0)
对我有用的东西
groovydoc -d docs -sourcepath "src;." my.package vars
将vars
中的所有内容导出为DefaultPackage,并将my.package
文件夹中包含的src
导出。
答案 4 :(得分:0)
为了确保在正确的程序包中报告所有内容,而不必枚举所有程序包,我使用了:
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/
。