我想从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")
}
}
- 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
目录下的方法,该怎么办?谢谢!
1条答案
按热度按时间vdzxcuhz1#
无需在本地重新实现您的代码部分,我注意到您和我的代码之间存在一些差异。
Jenkins档案
1.我的@Library行下划线前没有空格
1.在@Library行之后,我立即导入了共享库类,它实现了我要调用的方法。
1.对方法的调用的格式为
(new DemoClass(config, this)).testVarsInvokeDemoMethod()
共享库类
1.我的任何groovy类中都没有
#!groovy
。1.我的类是公共的并且实现了Serializable
希望这些差异之一是为什么它没有被调用的原因。