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

添加一些链接作为未来读者的参考:


您知道这些文档吗?要使用这些步骤,您需要将this指针传递给类。可能重复:阅读这两个指针表明它不是,为什么您会认为它是?您的参考说明了如何调用库。在我的问题中,是什么暗示我们不清楚如何称呼图书馆?我的问题是如何从VARS目录获取一个值,以便SRC目录使用它。再看看你的例子,我现在可以看到你确实把this指针传递给了utils类。然而,实际上您并没有在
Utils.run()中使用它。我希望您使用类似于
script.Defaults.text
的东西,而不是
Defaults.text
。假设
script
acutally保存了脚本的副本,但很遗憾,我不能告诉您,因为构造函数在您的示例中不可见。无论如何,我还没有尝试在
vars
中定义静态变量。因此,我无法判断它是否有效。我唯一能说的是,如果不使用script对象,它肯定不会成功。添加
脚本
成功了!非常感谢你!