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

cau*_*chy 7 jenkins-groovy jenkins-pipeline

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

class ClassTest {
    String testString
    def method1() { ... }
    def method2() { ... }
}
Run Code Online (Sandbox Code Playgroud)

并在管道开始时

library 'testlibrary@'
import ClassTest
Run Code Online (Sandbox Code Playgroud)

结果:

WorkflowScript:2:无法解析类ClassTest @第2行,第1列。import
ClassTest

以前,我只是傻瓜

library 'testlibrary@' _
Run Code Online (Sandbox Code Playgroud)

并使用以下方法

script {
    libraryTest.method1()
    ...
    libraryTest.method2()
}
Run Code Online (Sandbox Code Playgroud)

方法在文件“ /var/libraryTest.groovy”中,并且一切正常。所以我知道共享库在那里,但是我对groovy / Jenkins处理类/共享库的方式感到困惑。

导入类的正确方法是什么?我在文档中找不到一个简单的示例(带有Groovy文件,文件结构和管道)。

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

@Library('testlibrary@') import com.company.ClassTest
def notification = new ClassTest()
Run Code Online (Sandbox Code Playgroud)

但是现在的错误是

意外令牌:程序包@第2行

groovy文件的前两行是:

// src/com/company/ClassTest.groovy
package com.company;
Run Code Online (Sandbox Code Playgroud)

cau*_*chy 7

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

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

@Library('testlibrary@') import com.company.ClassTest
def notification = new ClassTest()
Run Code Online (Sandbox Code Playgroud)

在类文件中,没有 打包说明。我想我不需要一个,因为我没有任何其他文件或类,所以我真的不需要包。此外,当对类和类所在的文件使用相同的名称时,我遇到了错误。该错误特别抱怨并要求更改其中之一。我想这两件事与詹金斯有关。

那行得通,并且库已加载。