website for the plugin表示您可以创建一个groovy脚本来运行以确定参数列表。
这怎么解决了?说明书没有说什么。
variable bindings
的额外字段。这是怎么用的?答案 0 :(得分:27)
我不得不深入研究源代码以找到这些问题的答案,所以我希望这有助于其他所有人。
<强> 1。脚本在什么上下文中运行?
该脚本在groovy.lang.GroovyShell中运行。该类目前来自Groovy 1.8.5库。这是代码的摘录:
// line 419 - 443 of the ExtendedChoiceParamaterDefinition
else if(!StringUtils.isBlank(groovyScript)) {
try {
GroovyShell groovyShell = new GroovyShell();
setBindings(groovyShell, bindings);
Object groovyValue = groovyShell.evaluate(groovyScript);
String processedGroovyValue = processGroovyValue(isDefault, groovyValue);
return processedGroovyValue;
}
catch(Exception e) {
}
}
else if(!StringUtils.isBlank(groovyScriptFile)) {
try {
GroovyShell groovyShell = new GroovyShell();
setBindings(groovyShell, bindings);
groovyScript = Util.loadFile(new File(groovyScriptFile));
Object groovyValue = groovyShell.evaluate(groovyScript);
String processedGroovyValue = processGroovyValue(isDefault, groovyValue);
return processedGroovyValue;
}
catch(Exception e) {
}
}
<强> 2。我应该从脚本中返回什么?
如上面的代码所示,脚本应返回一个字符串,其中包含您在paramater或String []数组中指定的任何分隔符。这是一个处理脚本返回值的函数片段:
// line 450 - 465 of ExtendedChoiceParameterDefinition
private String processGroovyValue(boolean isDefault, Object groovyValue) {
String value = null;
if(groovyValue instanceof String[]) {
String[] groovyValues = (String[])groovyValue;
if(!isDefault) {
value = StringUtils.join((String[])groovyValue, multiSelectDelimiter);
}
else if(groovyValues.length > 0) {
value = groovyValues[0];
}
}
else if(groovyValue instanceof String) {
value = (String)groovyValue;
}
return value;
}
第3。什么目录是脚本的cwd?它是环境变量WORKSPACE吗?
重要吗?您可以使用
从脚本中访问环境变量WORKSPACEMap<String, String> props = System.getenv();
def currentDir = props.get('WORKSPACE');
<强> 4。还有一个名为变量绑定的额外字段。这是怎么用的?
这是属性文件格式化的key = value文件。这些名称然后可以在groovy脚本中解析。
e.g.
key1=foo
prop2=bar
答案 1 :(得分:0)
用于解析json对象(从参数)到groovy对象 - Parsing and producing JSON
import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText('{ "myList": [4, 8, 15, 16, 23, 42] }')
println(object.myList)