9

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

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

在管道开始时

library 'testlibrary@'
import ClassTest

结果:

WorkflowScript:2:无法解析类 ClassTest @line 2,column 1.
import 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()

但现在错误是

意外令牌:包@第 2 行

groovy 文件的前两行是:

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

2 回答 2

7

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

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

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

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

这有效,并且库已加载。

于 2018-05-24T09:56:36.157 回答
0

(也许它可以帮助别人)

我遇到了同样的问题。一旦我package-info.java在文件夹中添加了一个com/lib/,包含

/**
 * com.lib package 
 */
package com.lib;

package com.lib在每个文件的第一行添加,它开始工作。

于 2021-09-09T14:10:03.867 回答