0

在我的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 文件之间共享代码的正确方法是什么?

4

1 回答 1

1

我最终做了一些hackery:

src/org/inin/Pipeline.groovy:

package org.inin;

def getBuild(){
 return new Build();
}

def getTest(){
 return new Test();
}

src/org/inin/Build.groovy:

package org.inin;

def DoMavenBuild(gitRepo, gitBranch, pomName ){
    ...
}

src/org/inin/Test.groovy:

package org.inin;

def DoTest(){
    ...
}

在工作本身:

def pipeline =  new org.inin.Pipeline();
pipeline.build.DoMavenBuild(...);
pipeline.test.DoTest();
于 2015-07-23T20:42:16.793 回答