【问题标题】:In a Jenkins shared library infrastructure, how do I import class in another file?在 Jenkins 共享库基础架构中,如何在另一个文件中导入类?
【发布时间】:2020-04-08 16:17:48
【问题描述】:

我正在使用Jenkins shared library 插件并具有以下结构

src/com/domain/service/baseClass.groovy
          "           /subClass.groovy

我有这个在baseClass.groovy

class BaseClass {
  Integer port = 5000
  String name = null
}

我希望能够在subClass.groovy 中做到这一点

import com.domain.service.baseClass
class SubClass extends BaseClass {
  String name = 'myName'
}

def printValues()
  SubClass sc = new SubClass()
  println "Name: $sc.name, Port: $sc.port"
}

我的想法是我想在我的 BaseClass 中定义公共属性并在我的 SubClass 中重用(例如port)或覆盖(例如name)它们。你知道-OOD。我可以有几个子类都继承自 BaseClass。

然后在我的 Jenkins 管道作业配置页面中,我这样做(我在我的系统配置中将“my-repo”设置为共享库)

node('linux-node') {
  @library('my-repo')
  def sb = new com.domain.service.subClass()
  sb.printValues()
}

当我运行这个管道时,我得到以下信息。共享库是否支持这种层次结构?

subClass.groovy: 3: unable to resolve class BaseClass

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline jenkins-shared-libraries


    【解决方案1】:

    在类文件中使用package 定义

    package com.domain.service
    class BaseClass {
      Integer port = 5000
      String name = null
    }
    

    package com.domain.service
    
    import com.domain.service.baseClass
    class SubClass extends BaseClass {
      String name = 'myName'
    }
    

    【讨论】:

    • 谢谢,但即使我这样做,我也会遇到同样的错误。我会更多地玩它。
    猜你喜欢
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多