Jenkins管道共享库无法调用src目录中的方法

falq053o  于 2023-01-08  发布在  Jenkins
关注(0)|答案(1)|浏览(180)

我想从vars目录中调用src目录的方法,这在IDE中是有效的。但是在Jenkins中似乎不起作用。
1.项目结构

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

2.演示类. groovy的内容

#!groovy
package foo

class DemoClass {
    def testDemoMethod() {
        println("src DemoClass testDemoMethod")
    }
}
  1. 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")
}

4.Jenkins管道

@Library('tools') _
varDemo.testVarsDemo()
varDemo.testVarsInvokeDemoMethod()

5.流水线执行结果

> 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

demoClass.testDemoMethod()好像不起作用,为什么不能调用demoClass.testDemoMethod()?如果我想调用src目录下的方法,该怎么办?谢谢!

vdzxcuhz

vdzxcuhz1#

无需在本地重新实现您的代码部分,我注意到您和我的代码之间存在一些差异。

Jenkins档案

1.我的@Library行下划线前没有空格
1.在@Library行之后,我立即导入了共享库类,它实现了我要调用的方法。
1.对方法的调用的格式为(new DemoClass(config, this)).testVarsInvokeDemoMethod()

共享库类

1.我的任何groovy类中都没有#!groovy
1.我的类是公共的并且实现了Serializable
希望这些差异之一是为什么它没有被调用的原因。

相关问题