当前位置: 首页 > 知识库问答 >
问题:

Jenkins共享库src类-无法解析类

颜黎昕
2023-03-14

我正在寻找一些关于Jenkins共享库类设计的指导。使用全局变量作为共享库可以很好地工作,但每次我在src/中定义一个类并希望导入它时,都会遇到无法解析该类的错误。

这是我的共享库结构:

src
  - de
   - schlumpf
     - Tester.groovy
vars
  - sayHello.groovy

类测试员。棒极了

下面是我想在管道作业中初始化的类的代码

package de.schlumpf

public class Tester implements Serializable {
  public String name = "test"

  Tester(String pName) {
    this.name = pName
  }

  def sayHi() {
    echo "Hello, ${this.name}."
  }

  def sayHi(String name) {
    echo "Hello, ${name}."
  }
}

你好。棒极了

#!/usr/bin/env groovy

def call(String name = 'human') {
  echo "Hello, ${name}."
}

管道作业

@Library('pipeline-library-demo')
import de.schlumpf.Tester //de.schlumpf doesn't work as well

stage('Demo') {
    echo 'Hello world'
    sayHello 'test'

    def t = new Tester('Alice')
    t.sayHi()
}

在第2行中,我得到错误:无法解析类de.schlumpf.测试器。全局变量sayHello就像一个魅力...有人知道我在这里做错了什么吗?

我知道这个看起来和这个很像,但我找不到一个打字错误或是在我的路径上。。。使用Jenkins共享库作为类

官方文件如下:https://jenkins.io/doc/book/pipeline/shared-libraries/

版本

  • 詹金斯:弗。2.150.1
  • 管道2.6
  • 管道: Groovy 2.61.1
  • 管道:共享Groovy库2.12

共有2个答案

阙星渊
2023-03-14

当我动态加载库时,调用静态函数时遇到类似问题:https://www.jenkins.io/doc/book/pipeline/shared-libraries/#loading-动态库

这应该适合您:

def myLib = library 'pipeline-library-demo'
def t = myLib.de.schlumpf.Tester.new('Alice')
t.sayHi()
通寂离
2023-03-14

它引发了一个错误,因为您在脚本块之外创建了一个类的对象。尝试下面的代码,它应该可以工作。

@Library('pipeline-library-demo')
import de.schlumpf.*;

stages{
    stage('Demo') {  
      steps{
        echo 'Hello world'
        sayHello 'test'
       script{
        def t = new Tester('Alice')
        t.sayHi()
       }
      }
   }
 }  
 类似资料:
  • 问题内容: 我正在尝试为CI流程编写Jenkins共享库。我想引用在文件夹中定义的全局函数内的文件夹中的类,因为它可以使我将大多数逻辑放在类中,而不是在全局函数中。我正在遵循Jenkins官方文档中记录的存储库结构: Jenkins Shared Library结构 这是我所拥有的简化示例: /src/com/example/SrcClass.groovy /vars/classFromVars.

  • 我有一个Jenkins文件,我正在尝试从共享库实例化groovy类。我得到“无法解决类测试” 我有一个src/com/org/foo。共享库中的groovy文件: 我正试图在我的Jenkins文件中实例化它 如果我将文件作为一个类引用(我没有对其构造函数的访问权限),那么它就会起作用。即: 这很好,让我使用foo函数。但是,我失去了赋予类常量并用参数构造它的能力。 知道如何定义和使用共享库中的类吗

  • 目前,我正在我的项目中创建一个Jenkins共享库,在实例化一个对象时遇到了一个问题。 我的应用程序的树结构 -day#1 --/詹金斯档案 --/src/File1。groovy --/测试/文件1规范。groovy --/vars/file1。groovy 从我的Jenkins文件中,我可以调用file1。函数,inturn将创建写入文件中的类对象/src/File1。groovy和它工作得很

  • 我通过jenkins管道(共享库)运行此代码。 它在本地工作,但在Jenkins管道中,我得到以下错误: 请帮帮我

  • 可以合并多个共享Jenkins库吗? 例如,我有一个公共共享库:我的共享库(带有maven项目的git存储库)定义在包含一些作业的jenkins文件夹上。在该文件夹中运行的每个作业都可以使用Jenkins文件中的共享库,包括: 现在,我想创建另一个共享库:包含一些专门管道的my-专门化共享库(在另一个git存储库中,也作为maven项目)。我的专用共享库中的管道(groovy类、脚本等)应该能够使

  • 问题内容: 詹金斯版 2.89.4workflow -cps ver 2.42 当我尝试运行加载库的管道时,出现以下异常: 引用链接的Groovy类: 您可以像这样在管道或库中重现异常: 问题答案: 这是一个已知的詹金斯问题:JENKINS-45901 自2017年8月以来已开放。看起来很快不会修复: 不知道是否有详尽的文档记录了Groovy语言支持(或缺乏它),但是无论如何我都不会期望这个问题或