groovy.lang.MissingPropertyException:没有这样的属性:类的经理:Script1

时间:2013-04-18 13:14:00

标签: maven groovy jenkins hudson hudson-plugins

我试图在Hudson中调用Groovy(使用groovy插件)来获取构建的一​​些属性。但我得到了这个例外:

groovy.lang.MissingPropertyException:没有这样的属性:类的经理:Script1

我通过以下一行得到了这个:

def buildNUmber = manager.build.number

当我在Jenkins中作为内联命令运行以及使用脚本时会发生这种情况:

我尝试了下面的解决方案,但在声明本身(第二行)失败了:

Binding binding = new Binding();
binding.setVariable("manager", manager);
GroovyShell shell = new GroovyShell(binding);
shell.evaluate(new File("d:/dev/others/hudson/userContent/ScriptStuff.groovy").text);

以上运行使用:Groovy命令。当我运行构建时,它会出错并抱怨该行 - binding.setVariable("manager", manager);

当我使用Groovy脚本文件时,它抱怨:

 def buildNumber = manager.build.number

两个错误都是:groovy.lang.MissingPropertyException:没有这样的属性:类的经理:Script1

尝试了这个thread中提及的所有内容:

我正在使用Hudson 2.2.1和Groovy 2.1.3。可能有什么不对?

4 个答案:

答案 0 :(得分:19)

manager由某些Groovy脚本插件提供,但不是全部。要使脚本具有通用性,请改用Jenkins / Hudson API:

import hudson.model.*

def build = Thread.currentThread().executable
def buildNumber = build.number
...

答案 1 :(得分:6)

如果它有用,如果你使用'Execute System Groovy Script',你不需要使用'manager'变量。这对我有用 -

def workspace = build.getEnvVars()["WORKSPACE"]

答案 2 :(得分:2)

也许我错过了部分代码,但是你在哪里定义经理?如果那是完整的Groovy脚本,那么你正在尝试绑定一个未声明任何内容的变量,所以它失败并不奇怪,对吗?

只需将经理定义为您想要的,例如:

def manager = "my manager" // probably not what you want

应该摆脱你当前的错误。

答案 3 :(得分:2)

当您在其范围之外使用变量或者您尚未定义该变量时,会抛出 groovy.lang.MissingPropertyException:的原因之一。