在Jenkins共享库基础结构中,如何将类导入另一个文件?

时间:2019-09-27 01:46:59

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

我正在使用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中定义通用属性,并在子类中重用(例如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

1 个答案:

答案 0 :(得分:0)

在类文件中使用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'
}