build: projectVersion выставляется через beforeEvaluate (ловит KMP)
В предыдущей версии subprojects { version = ... } выставляло version
ПОСЛЕ того как KMP-плагин создал publications. Для большинства модулей
это работало (Gradle пересчитывал version в публикации lazy), но для
:standalone плагин shadow + ленивая KMP-инициализация приводили к тому,
что publication 'kotlinMultiplatform' всё-таки создавалась с пустой
version → 'InvalidMavenPublicationException: version cannot be empty'
ТОЛЬКО в CI (локально работало — потому что Gradle Daemon прогревал
метаданные и не доходил до этого пути).
Фикс: subprojects.beforeEvaluate { version = rootProject.extra['projectVersion'] }
выполняется до применения любых plugins → project.version гарантированно
не 'unspecified' к моменту создания публикации.
This commit is contained in:
+11
-2
@@ -32,9 +32,18 @@ val binomRepoPassword = (findProperty("binom.repo.password") as String? ?: "").t
|
|||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
group = rootProject.group
|
group = rootProject.group
|
||||||
// Передаём вычисленную projectVersion, а не rootProject.version (который
|
|
||||||
// в момент apply ещё может быть "unspecified" для subproject'ов).
|
// KMP-плагин читает project.version на ранней стадии evaluation — ДО того
|
||||||
|
// как сработает внешний subprojects-блок. Если version ещё "unspecified",
|
||||||
|
// publication 'kotlinMultiplatform' создаётся с пустой version, и тогда
|
||||||
|
// maven-publish падает с 'InvalidMavenPublicationException: version cannot
|
||||||
|
// be empty'. Поэтому:
|
||||||
|
// 1) eagerly переопределяем version в rootProject.extra (см. выше)
|
||||||
|
// 2) на КАЖДЫЙ subproject вешаем beforeEvaluate, который выставляет
|
||||||
|
// version до того, как KMP-плагин начнёт создавать publications.
|
||||||
|
beforeEvaluate {
|
||||||
version = rootProject.extra["projectVersion"] as String
|
version = rootProject.extra["projectVersion"] as String
|
||||||
|
}
|
||||||
|
|
||||||
apply(plugin = "maven-publish")
|
apply(plugin = "maven-publish")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user