【发布时间】:2018-10-04 21:58:46
【问题描述】:
我有一个 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 函数。但是,我失去了提供类常量并使用参数构造它的能力。
知道如何定义和使用共享库中的类吗? 谢谢
【问题讨论】:
-
为什么要在
foo.groovy中定义它而不是命名为Test.groovy?我不知道是否有 Groovy 的怪异或 Jenkins Groovy 的怪异导致编译行为异常。如果您执行import com.org.foo和println(foo),它将打印出class com.org.Test。 -
这是一个 javaism:保持类名 == 文件名。
标签: class jenkins groovy shared-libraries jenkins-pipeline