显然,TeamCity Kotlin DSL中不支持metarunners生成。这些文件保留为纯XML格式。
如何使用可用的DSL功能替换它?说我想这样做:
steps {
step {
type = "mymetarunner" // compound meta-runner step
}
}
如何使用Kotlin定义mymetarunner
?
答案 0 :(得分:3)
目前(TeamCity 2017.2),没有办法使用Kotlin DSL定义元游戏。
<强>更新强> 如果不需要真正的metarunner,解决方案是Kotlin DSL
中的一个小练习为“metarunner”
定义所需设置的容器类class MyConfigClass {
var name = "Default Name"
var goals = "build"
var tasks = "build test"
var someUnusedProperty = 0
}
为steps
块定义extension function
fun BuildSteps.myMetaRunner(config: MyConfigClass.() -> Unit) {
val actualConfig = MyConfigClass() // new config instance
actualConfig.config() // apply closure to fill the config
// use the config to create actual steps
maven {
name = actualConfig.name
goals = actualConfig.goals
}
ant {
name = actualConfig.tasks
}
}
在任何需要的地方使用扩展功能
object A_Build : BuildType({
uuid = ...
steps {
myMetaRunner {
name = "This name will be used by maven step"
goals = "build whatever_goal"
tasks = "more ant tasks"
}
}
})
宾果!