Gradle: разделяйте конфигурацию репозитория между settings.gradle.kts и buildSrc/build.gradle.kts

Существует многомодульный проект Gradle 6.X, использующий Kotlin DSL. Функция buildSrc используется для централизованного управления версиями зависимостей. Что-то похожее на подход, описанный здесь.

Проект использует внутренний сервер для загрузки зависимостей. Это приводит к дублированию конфигурации настроек репозитория в двух местах:

buildSrc/build.gradle.kts:

plugins {
    `kotlin-dsl`
}

repositories {
    // The org.jetbrains.kotlin.jvm plugin requires a repository
    // where to download the Kotlin compiler dependencies from.
    maven {
        url = uri("${extra.properties["custom.url"] as? String}")
        credentials() {
            username = extra.properties["custom.username"] as? String
            password = extra.properties["custom.password"] as? String
        }
    }
}

и корень settings.gradle.kts:

...
gradle.projectsLoaded {
    allprojects {
        repositories {
            maven {
                url = uri("${extra.properties["custom.url"] as? String}")
                credentials() {
                    username = extra.properties["custom.username"] as? String
                    password = extra.properties["custom.password"] as? String
                }
            }
        }
    }
}
...

Можно ли как-то разделить дублированный блок maven между этими двумя местами?


person yuppie-flu    schedule 05.03.2020    source источник


Ответы (1)


Вы можете попробовать реорганизовать свой файл kts во что-то вроде этого. Вам это помогает?

repositories.gradle.kts:

repositories {
            maven {
                url = uri("${extra.properties["custom.url"] as? String}")
                credentials() {
                    username = extra.properties["custom.username"] as? String
                    password = extra.properties["custom.password"] as? String
                }
            }
        }

buildSrc/build.gradle.kts

plugins {
    `kotlin-dsl`
}
apply(from="../repositories.gradle.kts")

settings.gradle.kts

gradle.projectsLoaded {
    allprojects {
        apply(from = "repositories.gradle.kts")
    }
}
person afterburner    schedule 25.04.2020