Como usar métodos de uma biblioteca java externa global em um Groovy Jenkins Pipeline?

Primeiro, eu sou novo em Java, Groovy e Jenkins, por favor, seja paciente comigo;)

Estou preparando um servidor Jenkins com suporte ao Pipeline para uso futuro em nosso ambiente de compilação. Usamos uma linguagem de script interna especial para a qual eu tenho que escrever um wrapper em java. Não há opção para fazer o trabalho apenas no Groovy, temos que usar esse idioma especial.

Eu tentei muitos métodos de referenciar a lib java para esse projeto jenkins, mas nenhum deles funcionou. Eu principalmente usei a documentação emhttps://github.com/jenkinsci/workflow-cps-global-lib-plugin para implementar isso, mas também tentou várias abordagens pesquisando no google ou no stackoverflow. Após a documentação, essa inclusão deve ser possível.

Reduzi o processo para uma configuração de teste para fins de teste.

Suponha o seguinte ...

Eu tenho um projeto multibranch no Jenkins chamado 'MultibranchTestProject01'.
O arquivo Jenkins:

@Library('DeltaJenkinsScripts@develop')

def runStageCollect = true

if (runStageCollect)
{
    stage("Collect")
    {
        helloWorld("Joe")
    }
}

A biblioteca referenciada é referenciada globalmente via 'Global Pipeline Libraries' nas configurações de Jenkins, mas também explicitamente aqui para esclarecer as coisas. Está hospedado em um ambiente git e a referência parece funcionar. A estrutura do arquivo desta biblioteca:

/vars/helloWorld.groovy

package de.dcomp.prod

def call(name) {
    def tt = new Test()
    tt.testText()
}

/src/de/dcomp/prod/Test.groovy

package de.dcomp.prod

import de.dcomp.ftel.*

def testText()
{
    def sRetVal = ""
    echo "testText - START"
    //sRetVal = ScriptRunner.GetStaticSampleText()
    def oSR = new ScriptRunner()
    sRetVal = oSR.GetInstanceSampleText()
    echo "ReturnValue: ${sRetVal}"
}

Eu tenho uma java lib chamada ScriptRunner-0.0.1-SNAPSHOT.jar. Esta biblioteca possui uma única classe:

package de.dcomp.ftel;

public class ScriptRunner
{
    public String GetInstanceSampleText()
    {
        return "ScriptRunner.GetInstanceSampleText() called...";
    }
    public static String GetStaticSampleText()
    {
        return "ScriptRunner.GetStaticSampleText() called...";
    }
}

Não tenho nenhum problema em referenciar e usar esta biblioteca em um projeto java independente.

Eu tentei várias maneiras de incluí-lo:

Coloque o arquivo jar em 'C: \ Users \ cr.groovy \ lib'Configurando o Caminho de Classe em um ambiente Linux de teste.Usando o plug-in "Pipeline: etapas do caminho de classe" para adicionar a biblioteca ao caminho de classe em diferentes notações, por exemplo, 'C: \ Users \ cr.groovy \ lib', C: /Users/cr/.groovy/lib ',' C: \ Users \ cr.groovy \ lib \ ScriptRunner-0.0.1-SNAPSHOT.jar ',' C: /Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar ',' arquivo: /// C: /Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar "adicionando a lib a um repositório maven local e referenciando por @GrabResolver e @Grab, embora essa não seja a solução que eu gostaria de ter

ou carregamento dinâmico com:

this.class.classLoader.rootLoader.addURL(new URL("file:///C:/Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar"));
def srClass = Class.forName("de.dcomp.ftel.ScriptRunner")
def sr = srClass.newInstance()

O resultado é sempre algo parecido com isto.

groovy.lang.MissingPropertyException: No such property: ScriptRunner for class: de.dcomp.prod.Test

ou isto:

de/dcomp/prod/Test.groovy: 10: unable to resolve class ScriptRunner 
 @ line 10, column 12.
    def oSR = new ScriptRunner()

As mensagens de erro apontam sempre na direção em que o processo não pode encontrar a biblioteca Java. O mesmo aconteceu se eu tentar usar outra biblioteca, por exemplo do Apache Commons.

Eu gostaria de evitar escrevê-lo como um plugin, se isso for possível.

Desde já, obrigado!

questionAnswers(2)

yourAnswerToTheQuestion