首页 > 解决方案 > 在 Jenkins 共享库基础架构中,如何在另一个文件中导入类?

问题描述

我正在使用Jenkins 共享库插件并具有以下结构

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

标签: jenkinsgroovyjenkins-pipelinejenkins-shared-libraries

解决方案


使用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'
}

推荐阅读