Jenkins 詹金斯&x2B;Groovy:库
情况很简单-在全局库中(沙箱外部): 在Jenkins 詹金斯&x2B;Groovy:库,jenkins,jenkins-pipeline,jenkins-groovy,Jenkins,Jenkins Pipeline,Jenkins Groovy,情况很简单-在全局库中(沙箱外部): 在src-a.b.c.Utils.groovy 在vars-Defaults.groovy 如何从Utils.groovy中调用Defaults.groovy 在src中: #!groovy package a.b.c public class Utils implements Serializable { def script public def run() { println(Defaults.text) //gro
src
-a.b.c.Utils.groovy
在vars
-Defaults.groovy
如何从Utils.groovy
中调用Defaults.groovy
在src
中:
#!groovy
package a.b.c
public class Utils implements Serializable {
def script
public def run() {
println(Defaults.text)
//groovy.lang.MissingPropertyException: No such property: Defaults for class: a.b.c.Utils
}
}
在变量中
:
#!棒极了
public class Defaults {
public static def text = "hello world"
}
在文件中
:
@Library("ItLoads")
utils = new a.b.c.Utils(script:this)
...
utils.run()
所以我尝试显式加载库
#!groovy
package a.b.c
public class Utils implements Serializable {
def script
public def run() {
println(script.library("ItLoads").Defaults.text)
//Only using first definition of library ItLoads
//java.lang.IllegalAccessException: Defaults was defined in file:///apps/opt/.../vars/Ansible.groovy which was not inside file:///apps/opt/.../src/
}
}
所以,默认值
是在某个地方定义的,但我不知道如何实现它
如果我尝试在jenkins文件
中使用默认值
,它会起作用
帮助查看您的代码我可以看到您没有使用
脚本
对象访问默认值
:
您应该使用类似于script.Defaults.text
的内容,而不是Defaults.text
添加一些链接作为未来读者的参考:
Utils.run()中使用它。我希望您使用类似于script.Defaults.text
的东西,而不是Defaults.text
。假设script
acutally保存了脚本的副本,但很遗憾,我不能告诉您,因为构造函数在您的示例中不可见。无论如何,我还没有尝试在vars
中定义静态变量。因此,我无法判断它是否有效。我唯一能说的是,如果不使用script对象,它肯定不会成功。添加脚本
成功了!非常感谢你!