kotlin - Kotlin 中的 TeamCity 配置 - 子项目中的构建 id 冲突
问题描述
可以根据子项目 ID 而不是根项目 ID 生成构建 ID 吗?
我收到验证错误:
BuildType 'RootProjectId_build': id 'RootProjectId_build' is already used
in BuildType(uuid='', id='RootProjectId_build', name='buildA')
对于具有相同类名(但在不同包中)的 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)
})
子项目A.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)
})
子项目B.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)
})
出于某种原因,我需要为构建保留相同的类名,所以我不会简单地将“object build”更改为“object buildA”和“object buildB”
解决方案
假设包名称等同于子项目,解决方法是:
object build : BuildType({name = "buildB"
id(this.javaClass.`package`.name +"_"+id.toString().split("_")[1])
})
这种方式构建ID是:RootProjectId_B_build
推荐阅读
- java - Spring 一对多总是空的
- mysql - #1064 - 您的 SQL 语法有错误。我的更新 SQL 语句中的错误
- python - 了解 min(points, key=lambda p: (px, py))
- javascript - 如何在 JavaScript 中利用全球化?
- java - Ignite 的堆外存储的工作原理和相对于堆存储的优势
- arrays - 在训练语句中使用数组
- javascript - 如何在 npm 脚本 glob 模式中使用否定?
- python - 五边形数字的代码执行时间过长
- java - 如何使所有这些价值观成为积极的?
- mongodb - 根据 mongoDB 中的元素数组获取计数