Puede declarar dependencias comunes en un script principal:
ext.libraries = [ // Groovy map literal
spring_core: "org.springframework:spring-core:3.1",
junit: "junit:junit:4.10"
]
Desde un script secundario, puede usar las declaraciones de dependencia así:
dependencies {
compile libraries.spring_core
testCompile libraries.junit
}
Para compartir declaraciones de dependencia con opciones de configuración avanzadas, puede usar DependencyHandler.create
:
libraries = [
spring_core: dependencies.create("org.springframework:spring-core:3.1") {
exclude module: "commons-logging"
force = true
}
]
Se pueden compartir varias dependencias con el mismo nombre:
libraries = [
spring: [ // Groovy list literal
"org.springframework:spring-core:3.1",
"org.springframework:spring-jdbc:3.1"
]
]
dependencies { compile libraries.spring }
luego agregará ambas dependencias a la vez.
La única información que no puede compartir de esta manera es a qué configuración ( alcance en términos de Maven) se debe asignar una dependencia. Sin embargo, desde mi experiencia, es mejor ser explícito sobre esto de todos modos.
Peter Niederwieser
fuente
dependencies.gradle
guión donde defino todos mis dependencias como propiedades, por ejemplo:ext.GROOVY = 'org.codehaus.groovy:groovy-all:2.1.6'
. En el proyecto raízbuild.gradle
, incluyoallprojects { apply from: "$rootDir/dependencies.gradle" }
. Luego, todas las dependencias se definen en un archivo en lugar de distribuirlas, y se utilizan más constantes "fáciles de leer" en las configuraciones de dependencia.allprojects
porque las propiedades adicionales a nivel de proyecto son visibles para los subproyectos.Es una respuesta tardía, pero es posible que también desee echar un vistazo a: http://plugins.gradle.org/plugin/io.spring.dependency-management Brinda la posibilidad de importar un 'bom' de maven y reutilizar las definiciones definido en el 'bom'. ¡Sin duda es una buena ayuda cuando se migra gradualmente de maven a gradle! Disfrutándolo ahora mismo.
fuente
A partir de Gradle 4.6, las restricciones de dependencia se sugieren en la documentación como la forma de lograr esto. De https://docs.gradle.org/current/userguide/declaring_dependencies.html#declaring_a_dependency_without_version :
En su
build.gradle
archivo principal :whenPluginAdded {
No es estrictamente necesario envolver el bloque de dependencias con una comprobación del complemento de Java (... ), pero luego se encargará de agregar un proyecto que no sea de Java a la misma compilación.Luego, en un proyecto infantil de Gradle, simplemente puede omitir la versión:
Las compilaciones secundarias aún pueden optar por especificar una versión superior. Si se especifica una versión inferior, se actualiza automáticamente a la versión de la restricción.
fuente
allprojects
está bien.io.spring.gradle:dependency-management-plugin
El plugin tiene problemas con la nueva serie Gradle 3.x pero es estable para la serie 2.x. Como referencia, consulte el informe de errores Soporte de caída para Gradle 3 # 115En el caso de Spring ( principal promotor del uso de BOM ), puede terminar con:
Tenga en cuenta que
io.spring.platform:platform-bom
tieneorg.springframework.boot:spring-boot-starter-parent
como padre, por lo que es compatible con Spring BootPuede verificar la resolución de dependencia real a través de:
o con tarea:
Lea la publicación oficial del blog Soring Mejor administración de dependencias para Gradle para comprender el motivo de la introducción
io.spring.gradle:dependency-management-plugin
.fuente
Puede centralizar una dependencia usando el siguiente código:
En
gradle.properties
En cada módulo agregue a
build.gradle
:fuente
Esta publicación de blog sugiere administrar dependencias y grupos como configuraciones: https://www.javacodegeeks.com/2016/05/manage-dependencies-gradle-multi-project-build.html
No lo he probado yo mismo, pero parece interesante.
Proyecto raíz build.gradle
Subproyecto build.gradle
fuente
Para mantener limpio su archivo gradle, podemos agrupar las dependencias en una matriz e implementarlas más tarde.
Entonces, el código final se verá así:
fuente