Конфигурация TeamCity в Kotlin - конфликт идентификаторов в подпроектах - PullRequest
0 голосов
/ 11 сентября 2018

Может ли 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)
})

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)
})

По какой-то причине мне нужно остаться с теми же именами классов для сборок, поэтому я не буду просто менять «сборку объекта» на «сборку объекта» и «сборку объекта B»

1 Ответ

0 голосов
/ 11 сентября 2018

Предполагая, что имя пакета эквивалентно подпроекту, обходной путь:

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

таким образом, идентификатор сборки: RootProjectId_B_build

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...