Я не вижу никакого авторитетного материала, утверждающего, что указание нескольких блоков dependencies
формально поддерживается. Существует ли такой материал?
Никакого материала не нужно, потому что Gradle DSL (Groovy или Kotlin) не является чем-то особенным или волшебным. Это просто сахар по сравнению с Gradle API .
Указание нескольких блоков dependencies
совершенно законно. Если вы удалите сахар из Gradle DSL, то вызов нескольких блоков dependencies
на самом деле просто делает:
project.getDependencies().add("implementation", "foo:bar:1")
project.getDependencies().add("testImplementation", "foo:bar:4")
Это ничем не отличается от простого вызова метода add(...)
в List
несколько раз.
Есть ли более предпочтительный способ разделения зависимостей по типу, чем этот?
Создать библиотеку (проект или подпроект), которая объединяет зависимости. Это легко сделать с помощью Java Библиотечного плагина . Например, для вашей тестовой библиотеки:
dependencies {
api("foo:bar:4") {
because("reason 4")
}
api("foo:bar:5") {
because("reason 5")
}
}
Затем просто используйте библиотеку в вашем основном проекте:
dependencies {
testImplementation(project(":my-test-library")) {
because("bundles test libs")
}
}