kotlin - 如何在 TeamCity 的 Kotlin DSL 中引用全局表达式?

标签 kotlin teamcity dsl

我正在尝试使用我的 settings.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)
    }
})

它有效,这是我能想到的最好的。

关于kotlin - 如何在 TeamCity 的 Kotlin DSL 中引用全局表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59314627/

相关文章:

powershell - 从 PowerShell 中的进程读取退出代码

teamcity - 从另一个构建标记 TeamCity 中的构建

android - 禁用没有 fragment 的 Activity

android - 如果应用在Android Oreo和更早版本中被杀死,则明确的广播接收器不会启动

java - 为什么 Kotlin 使用 == 来表示结构相等而引入 === 来表示引用相等

git - 如何获取 TeamCity REST API 中每个 Git 分支的最后构建列表?

grails - 常规/Grails : How to compose closures without breaking DSL

java - Groovy 的引用返回难题

java - Java 中的 Fluent Builder/DSL 示例

java - 如何使用 JPA 和 hibernate 映射 Java/Kotlin 字符串数组和 Postgres SQL 数组