Kotlin 如何在TeamCity';中引用全局表达式;是科特林DSL吗?
我试图在我的Kotlin 如何在TeamCity';中引用全局表达式;是科特林DSL吗?,kotlin,teamcity,dsl,Kotlin,Teamcity,Dsl,我试图在我的设置.kts(以下)中的一个全局位置使用名为myList的字符串(选项)列表,因为我试图使其更易于维护,但我不断遇到此错误表达式无法从嵌套类“MySubProject”访问。我一直在读关于Kotlin的书以及如何使用它,但我还没有弄明白这一点。也许有一些Kotlin或TeamCity DSL经验的人可以帮助我 import jetbrains.buildServer.configs.kotlin.v2019_2.project import jetbrains.buildServer
设置.kts
(以下)中的一个全局位置使用名为myList
的字符串(选项)列表,因为我试图使其更易于维护,但我不断遇到此错误表达式无法从嵌套类“MySubProject”访问。我一直在读关于Kotlin的书以及如何使用它,但我还没有弄明白这一点。也许有一些Kotlin或TeamCity DSL经验的人可以帮助我
import jetbrains.buildServer.configs.kotlin.v2019_2.project
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
var myList = listOf("Option 1", "Option 2")
project {
params {
select("system.MyOption",
myList[0],
label = "My Option",
description = "It's an option.",
options = myList)
}
subProject(MySubProject)
}
object MySubProject : Project ({
params {
select("system.MySubOption",
myList[0],
label = "My Sub Option",
description = "It's another option.",
options = myList)
}
})
所以我最后做的就是这样做一个对象声明:
object MyGlobalConfig {
var myList = listOf("Option 1", "Option 2")
}
project {
params {
select("system.MyOption",
MyGlobalConfig.myList[0],
label = "My Option",
description = "It's an option.",
options = MyGlobalConfig.myList)
}
subProject(MySubProject)
}
object MySubProject : Project ({
params {
select("system.MySubOption",
MyGlobalConfig.myList[0],
label = "My Sub Option",
description = "It's another option.",
options = MyGlobalConfig.myList)
}
})
然后在脚本的其他部分引用值,如下所示:
object MyGlobalConfig {
var myList = listOf("Option 1", "Option 2")
}
project {
params {
select("system.MyOption",
MyGlobalConfig.myList[0],
label = "My Option",
description = "It's an option.",
options = MyGlobalConfig.myList)
}
subProject(MySubProject)
}
object MySubProject : Project ({
params {
select("system.MySubOption",
MyGlobalConfig.myList[0],
label = "My Sub Option",
description = "It's another option.",
options = MyGlobalConfig.myList)
}
})
这是我能想到的最好的办法