情况很简单-在全球图书馆中(沙盒外):
在src
-a.b.c.Utils.groovy
中
在vars
-Defaults.groovy
如何在Defaults.groovy
内致电Utils.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
}
}
在vars
中: #!groovy
public class Defaults {
public static def text = "hello world"
}
在Jenkinsfile
中:
@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/
}
}
因此,Defaults
是在某处定义的,但是我不知道该怎么去...
如果我尝试在Defaults
中使用Jenkinsfile
,它将起作用。
帮助
答案 0 :(得分:0)
查看您的代码,我可以看到您没有使用script
对象访问Defaults
:
而不是Defaults.text
,您应该使用类似script.Defaults.text
的东西。
添加一些链接作为将来读者的参考: