Как импортировать класс в другом файле в инфраструктуре совместно используемой библиотеки Jenkins? - PullRequest
0 голосов
/ 27 сентября 2019

Я использую плагин общей библиотеки 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 и повторно использовать (например, port) или переопределить (например, name) их вмой подкласс.Вы знаете - ООД.У меня может быть несколько подклассов, все они наследуются от 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 голосов
/ 27 сентября 2019

Используйте определение 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'
}
...