使用Jenkins共享库作为类

时间:2018-04-24 15:08:47

标签: class jenkins groovy shared-libraries jenkins-pipeline

我有一个Jenkins文件,我试图从我的共享库中实例化一个groovy类。我得到"无法解决课程测试"

我在共享库中有一个src / com / org / foo.groovy文件:

package com.org

class Test implements Serializable{
  String val
  Test(val) {
    this.val = val
  }
}

我试图在我的jenkinsfile中实例化它

@Library('Shared-Library@master') 
import com.org //also tried to use with .foo with no success

def t = new Test("a") //doesnt work
def t = new foo.Test("a")//doesnt work
def t = new com.org.foo.Test("a")//doesnt work

如果我将文件称为一个类(我无法访问其构造函数),那么工作是什么。那就是:

@Library('Shared-Library@master')
def t = new foo.com.org.foo()

这很好,让我使用foo函数。但是,我失去了赋予类常量并使用参数构造它的能力。

知道我如何定义和使用共享库中的类吗? 感谢

1 个答案:

答案 0 :(得分:0)

  1. 您的课程范围是默认范围。您可以将范围更改为公开
  2. 由于您在脚本块之外创建了一个类的对象,因此引发错误。尝试下面的代码,它应该工作。尝试下面的代码
@Library('Shared-Library@master') 
import com.org.*;

stages{
   stage('Demo') {  
      steps{
         script{
            def t = new Test("a") //this should work
         }
      }
   }
}