Я использую TeamCity Kotlin DSL 2018.1 для настройки конфигурации сборки. Мой файл settings.kts выглядит так:
version = "2018.1"
project {
buildType {
id("some-id")
name = "name"
steps {
ant {
name = "Step1"
targets = "target1"
mode = antFile { path = "/some/path" }
workingDir = "/some/dir"
jdkHome = "some_jdk"
}
ant {
name = "Step2"
targets = "target2"
mode = antFile { path = "/some/path" }
workingDir = "/some/dir"
jdkHome = "some_jdk"
}
...
}
}
}
Это работает, как и ожидалось, но я хочу избегать записи одинаковых повторяющихся параметров для каждого шага снова и снова.
Я попытался написать функцию, которая создала бы шаг сборки, предварительно заполненный значениями по умолчанию:
fun customAnt(init: AntBuildStep.() -> kotlin.Unit): AntBuildStep {
val ant_file = AntBuildStep.Mode.AntFile()
ant_file.path = "/some/path"
val ant = AntBuildStep()
ant.mode = ant_file
ant.workingDir = "/some/dir"
ant.jdkHome = "some_jdk"
return ant
}
project {
buildType {
id("some-id")
name = "name"
steps {
customAnt {
name = "Step1"
targets = "target1"
}
customAnt {
name = "Step2"
targets = "target2"
}
...
}
}
}
Он компилируется, но не работает: TeamCity просто игнорирует шаги сборки, определенные таким образом.
К сожалению, официальная документация не содержит никакой информации о настройке и расширении DSL. Возможно, я что-то не так делаю с конструкцией Котлина () -> Unit
, но не могу понять, что именно не так.