Kotlin 中的 TeamCity 配置 - 子项目中的构建 ID 冲突

TeamCity configuration in Kotlin - build id conflict in subprojects

是否可以根据子项目Id生成build Id 而不是根项目 ID ?

我收到验证错误:

BuildType 'RootProjectId_build': id 'RootProjectId_build' is already used
in BuildType(uuid='', id='RootProjectId_build', name='buildA')

对于具有相同 class 名称(但在不同包中)的 2 个子项目和构建的以下项目

RootTestProject.kt

package _Self

import A.SubProjectA
import B.SubProjectB
import jetbrains.buildServer.configs.kotlin.v2018_1.Project

object RootTestProject : Project({
    subProject(SubProjectA)
    subProject(SubProjectB)
})

SubProjectA.kt :

package A

import jetbrains.buildServer.configs.kotlin.v2018_1.BuildType
import jetbrains.buildServer.configs.kotlin.v2018_1.Project

object build : BuildType({name = "buildA"})

object SubProjectA : Project({
    name = "SubProjectNameA"
    buildType(build)
})

SubProjectB.kt :

package B

import jetbrains.buildServer.configs.kotlin.v2018_1.BuildType
import jetbrains.buildServer.configs.kotlin.v2018_1.Project

object build : BuildType({name = "buildB"})

object SubProjectB : Project({
    name = "SubProjectNameB"
    buildType(build)
})

出于某种原因,我需要为构建保留相同的 class 名称,所以我不会简单地将 'object build' 更改为 'object buildA' 和 'object buildB'

假设包名等同于子项目 解决方法是:

object build : BuildType({name = "buildB"
    id(this.javaClass.`package`.name +"_"+id.toString().split("_")[1])
})

这种方式构建 ID 是:RootProjectId_B_build