在我的 workflowLibs 目录中,我有几个文件:
src/org/inin/Pipeline.groovy
src/org/inin/Build.groovy
src/org/inin/Test.groovy
Build.groovy 如下所示:
package org.inin;
def DoBuild(foo){
echo "I am building: $foo"
}
Test.groovy 如下所示:
package org.inin;
def DoTest(foo){
echo "I am testing: $foo"
}
我希望我的构建能够做到这样的事情:
def pipeline = new org.inin.Pipeline()
pipeline.DoBuild() or pipeline.Build.DoBuild()
pipeline.DoTest() or pipeline.Test.DoTest()
但我不知道如何在其自己的目录中制作Pipeline.groovy参考文件。 我试过这样做:
package org.inin;
load "Build.groovy"
//evaluate(new File("./Build.groovy"))
但我总是得到:
java.lang.NoSuchMethodError: No such DSL method DoBuild found among ...
在 workflowLibs 目录结构中的groovy文件之间共享代码的正确方法是什么?
答案 0 :(得分:1)
我最后做了一些hackery:
<强> SRC /组织/ ININ / Pipeline.groovy:强>
package org.inin;
def getBuild(){
return new Build();
}
def getTest(){
return new Test();
}
<强> SRC /组织/ ININ / Build.groovy:强>
package org.inin;
def DoMavenBuild(gitRepo, gitBranch, pomName ){
...
}
<强> SRC /组织/ ININ / Test.groovy:强>
package org.inin;
def DoTest(){
...
}
在工作本身:
def pipeline = new org.inin.Pipeline();
pipeline.build.DoMavenBuild(...);
pipeline.test.DoTest();