想在 vars 目录调用 src 目录下写的方法,本地 IDE 执行没问题,但是在 Jenkins 里执行却调用不了,google 了好久也没解决,请问有同学碰到过吗?

目录结构

├── src
│   └── foo
│       └── DemoClass.groovy
└── vars
    └── varDemo.groovy

DemoClass.groovy 的内容

#!groovy
package foo

class DemoClass {
    def testDemoMethod() {
        println("src目录 DemoClass类 testDemoMethod方法")
    }
}

varDemo.groovy 的内容

#!groovy

import foo.DemoClass

def testVarsDemo() {
    println("vars目录 varDemo.groovy testVarsDemo方法")
}

def testVarsInvokeDemoMethod() {
    println("vars目录 varDemo.groovy testVarsInvokeDemoMethod方法")
    def demoClass = new DemoClass()
    demoClass.testDemoMethod()
    println("end vars目录 varDemo.groovy testVarsInvokeDemoMethod方法")
}

在 Jenkins 上的 Pipeline

@Library('tools') _

varDemo.testVarsDemo()

varDemo.testVarsInvokeDemoMethod()

Pipeline 执行后结果如下

 > git checkout -f b6176268be99abe300d514e1703ff8a08e3ef8da
Commit message: "test"
 > git rev-list --no-walk c1a50961228ca071d43134854548841a056e16c9 # timeout=10
[Pipeline] echo
vars目录 varDemo.groovy testVarsDemo方法
[Pipeline] echo
vars目录 varDemo.groovy testVarsInvokeDemoMethod方法
[Pipeline] echo
end vars目录 varDemo.groovy testVarsInvokeDemoMethod方法
[Pipeline] End of Pipeline
Finished: SUCCESS

代码有执行到了 testVarsDemo() 的方法,也打印出来了。执行了 testVarsInvokeDemoMethod() 方法,有打印出来,但是demoClass.testDemoMethod()里的方法却没有打印出来。
请问下这是因为什么?怎么解决?


↙↙↙阅读原文可查看相关链接,并与作者交流