Jenkins + Groovy:图书馆

时间:2018-08-08 20:04:08

标签: jenkins jenkins-pipeline jenkins-groovy

情况很简单-在全球图书馆中(沙盒外): 在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,它将起作用。

帮助

1 个答案:

答案 0 :(得分:0)

查看您的代码,我可以看到您没有使用script对象访问Defaults: 而不是Defaults.text,您应该使用类似script.Defaults.text的东西。

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