Вы можете объявить общие зависимости в родительском скрипте:
ext.libraries = [ // Groovy map literal
spring_core: "org.springframework:spring-core:3.1",
junit: "junit:junit:4.10"
]
Затем из дочернего сценария вы можете использовать такие объявления зависимостей:
dependencies {
compile libraries.spring_core
testCompile libraries.junit
}
Чтобы поделиться объявлениями зависимостей с расширенными параметрами конфигурации, вы можете использовать DependencyHandler.create
:
libraries = [
spring_core: dependencies.create("org.springframework:spring-core:3.1") {
exclude module: "commons-logging"
force = true
}
]
Под одним именем можно использовать несколько зависимостей:
libraries = [
spring: [ // Groovy list literal
"org.springframework:spring-core:3.1",
"org.springframework:spring-jdbc:3.1"
]
]
dependencies { compile libraries.spring }
затем добавит обе зависимости сразу.
Единственная информация, которой вы не можете поделиться таким образом, - это какая конфигурация ( область действия в терминах Maven) должна быть назначена зависимости. Однако, по моему опыту, в любом случае лучше сказать об этом прямо.
Питер Нидервизер
источник
dependencies.gradle
сценарий , где я определяю всю мою зависимость как свойства, например:ext.GROOVY = 'org.codehaus.groovy:groovy-all:2.1.6'
. В корневой проектbuild.gradle
включаюallprojects { apply from: "$rootDir/dependencies.gradle" }
. Затем все зависимости определяются в одном файле вместо того, чтобы распространять их по всему миру, и в конфигурациях зависимостей используются более «легкие для чтения» константы.allprojects
потому что дополнительные свойства уровня проекта видны подпроектам.Это поздний ответ, но вы также можете взглянуть на: http://plugins.gradle.org/plugin/io.spring.dependency-management Он предоставляет возможность импортировать maven 'bom' и повторно использовать определения определено в "бомбе". Это, безусловно, хорошая помощь при постепенном переходе с maven на gradle! Наслаждаюсь этим прямо сейчас.
источник
Начиная с Gradle 4.6, ограничения зависимости предлагаются в документации как способ достижения этого. Из https://docs.gradle.org/current/userguide/declaring_dependencies.html#declaring_a_dependency_without_version :
В родительском
build.gradle
файле:Оборачивание блока зависимостей проверкой плагина Java (...
whenPluginAdded {
) не является строго необходимым, но затем он будет обрабатывать добавление проекта, отличного от Java, в ту же сборку.Затем в дочернем проекте Gradle вы можете просто опустить версию:
В дочерних сборках по-прежнему можно указать более высокую версию. Если указана более низкая версия, она автоматически обновляется до версии в ограничении.
источник
allprojects
тоже нормально.io.spring.gradle:dependency-management-plugin
плагин имеет проблемы с новой серией Gradle 3.x, но стабилен для серии 2.x. Для справки см. Отчет об ошибке Drop support for Gradle 3 # 115В случае Spring ( основной промоутер использования BOM ) вы можете закончить:
Обратите внимание, что
io.spring.platform:platform-bom
естьorg.springframework.boot:spring-boot-starter-parent
родительский элемент, поэтому он совместим с Spring BootВы можете проверить фактическое разрешение зависимостей с помощью:
или с задачей:
Прочтите официальный пост в блоге Soring. Лучшее управление зависимостями для Gradle, чтобы понять причину внедрения
io.spring.gradle:dependency-management-plugin
.источник
Вы можете централизовать зависимость, используя приведенный ниже код:
В
gradle.properties
В каждый модуль добавить
build.gradle
:источник
В этом сообщении блога предлагается управлять зависимостями и группами как конфигурациями: https://www.javacodegeeks.com/2016/05/manage-dependencies-gradle-multi-project-build.html
Сам не пробовал, но смотрится интересно.
Корневой проект build.gradle
Подпроект build.gradle
источник
Чтобы ваш файл gradle был чистым, мы можем сгруппировать зависимости в массив и реализовать их позже.
Таким образом, окончательный код будет выглядеть следующим образом :
источник