如何将Jenkins共享库中的类导入管道

时间:2018-05-23 15:07:04

标签: jenkins-pipeline jenkins-groovy

我在共享库的/ var目录中使用了一些全局方法,一切正常。现在我需要保持这个过程的状态,所以我正在写一个groovy类。 基本上我有一个叫做ClassTest.groovy' in' / src'这是这样的;

class ClassTest {
    String testString
    def method1() { ... }
    def method2() { ... }
}

并在管道的开头

library 'testlibrary@'
import ClassTest

结果:

  

WorkflowScript:2:无法解析类ClassTest @line 2,第1列。
  导入ClassTest

之前,我只是goind

library 'testlibrary@' _

并使用方法

script {
    libraryTest.method1()
    ...
    libraryTest.method2()
}

方法位于文件' /var/libraryTest.groovy'一切正常。所以我知道共享库已存在,但我对groovy / Jenkins处理类/共享库的方式感到困惑。

导入课程的正确方法是什么?我在文档中找不到一个简单的例子(使用groovy文件,文件结构和管道)。

编辑: 我把文件移到了' src / com / company / ClassTest.groovy'并将管道修改为

@Library('testlibrary@') import com.company.ClassTest
def notification = new ClassTest()

但现在错误是

  

意外令牌:package @ line 2

groovy文件的前两行是:

// src/com/company/ClassTest.groovy
package com.company;

1 个答案:

答案 0 :(得分:3)

到目前为止,这是我发现的。

在我使用的管道中加载库:

@Library('testlibrary@') import com.company.ClassTest
def notification = new ClassTest()

在类文件中,没有 指令。我想我不需要一个,因为我没有任何其他文件或课程,所以我真的不需要一个包。此外,我在为类和类所在的文件使用相同的名称时出错。该错误特别抱怨并要求改变其中一个。我想这两件事与詹金斯有关。

这样可行,并且库已加载。