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

Ane*_*ran 18 groovy hudson maven hudson-plugins jenkins

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

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

我用以下行得到这个:

def buildNUmber = manager.build.number
Run Code Online (Sandbox Code Playgroud)

当我在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);
Run Code Online (Sandbox Code Playgroud)

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

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

 def buildNumber = manager.build.number
Run Code Online (Sandbox Code Playgroud)

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

尝试了这个线程中提到的所有内容:

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

Cra*_*aig 19

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

import hudson.model.*

def build = Thread.currentThread().executable
def buildNumber = build.number
...
Run Code Online (Sandbox Code Playgroud)


Mav*_*ick 10

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


小智 6

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

def workspace = build.getEnvVars()["WORKSPACE"]
Run Code Online (Sandbox Code Playgroud)


Eri*_*agt 3

也许我遗漏了你的代码的某些部分,但是你在哪里定义管理器?如果这是完整的 Groovy 脚本,您将尝试绑定一个未声明任何内容的变量,因此失败也就不足为奇了。

只需定义一个经理,这就是您想要的,例如:

def manager = "my manager" // probably not what you want
Run Code Online (Sandbox Code Playgroud)

这应该可以解决您当前的错误。

  • 我理解,但似乎您正在尝试自己执行 Groovy 脚本,而不是使用基于 GroovyShell.execute() 的 https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin命令。 (2认同)