Using Jenkins Shared Libraries as classes

2019-07-21 02:05发布

问题:

I have a Jenkins file, and i'm trying to instantiate a groovy class from my shared library. I get "unable to resolve class Test "

I have a src/com/org/foo.groovy file in a shared library :

package com.org

class Test implements Serializable{
  String val
  Test(val) {
    this.val = val
  }
}

and I'm trying to instantiate it in my 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

What does work is if I refer to the file as a class (which I don't have the access to its constructor). That is:

@Library('Shared-Library@master')
def t = new foo.com.org.foo()

This is nice, and lets me use foo functions. However, I lose the power to give the class constants and construct it with parameters.

Any idea how I can define and use a class from shared library? Thanks