代码之家  ›  专栏  ›  技术社区  ›  cauchi

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

  •  6
  • cauchi  · 技术社区  · 7 年前

    我在共享库的/var目录中使用了一些全局方法,一切都很好。现在我需要保持进程的状态,所以我正在编写一个groovy类。 基本上我有一个名为“classtest.groovy”的类在“/src”中,类似于这样;

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

    在管道的开始

    library 'testlibrary@'
    import ClassTest
    

    结果如下:

    WorkflowScript:2:无法解析classtest@line 2,column 1。
    导入ClassTest

    以前,我只是去

    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 回复  |  直到 7 年前
        1
  •  3
  •   cauchi    7 年前

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

    要在我使用的管道中加载库,请执行以下操作:

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

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

    这样就可以了,库被加载了。