Você pode declarar dependências comuns em um script pai:
ext.libraries = [ // Groovy map literal
spring_core: "org.springframework:spring-core:3.1",
junit: "junit:junit:4.10"
]
Em um script filho, você pode usar as declarações de dependência da seguinte forma:
dependencies {
compile libraries.spring_core
testCompile libraries.junit
}
Para compartilhar declarações de dependência com opções de configuração avançada, você pode usar DependencyHandler.create
:
libraries = [
spring_core: dependencies.create("org.springframework:spring-core:3.1") {
exclude module: "commons-logging"
force = true
}
]
Várias dependências podem ser compartilhadas com o mesmo nome:
libraries = [
spring: [ // Groovy list literal
"org.springframework:spring-core:3.1",
"org.springframework:spring-jdbc:3.1"
]
]
dependencies { compile libraries.spring }
irá então adicionar ambas as dependências de uma vez.
A única informação que você não pode compartilhar dessa maneira é a qual configuração ( escopo nos termos do Maven) uma dependência deve ser atribuída. No entanto, pela minha experiência, é melhor ser explícito sobre isso de qualquer maneira.
dependencies.gradle
script onde eu definir todas as minhas dependências como propriedades, por exemplo:ext.GROOVY = 'org.codehaus.groovy:groovy-all:2.1.6'
. No projeto raizbuild.gradle
, eu incluoallprojects { apply from: "$rootDir/dependencies.gradle" }
. Então, todas as dependências são definidas em um arquivo em vez de distribuí-las, e mais constantes "fáceis de ler" são usadas nas configurações de dependência.allprojects
porque as propriedades extras no nível do projeto são visíveis para os subprojetos.É uma resposta tardia, mas você também pode querer dar uma olhada em: http://plugins.gradle.org/plugin/io.spring.dependency-management Oferece a possibilidade de importar um maven 'bom' e reutilizar as definições definido no 'bom'. Certamente é uma boa ajuda ao migrar gradualmente de maven para gradle! Aproveitando agora.
fonte
A partir do Gradle 4.6, as restrições de dependência são sugeridas na documentação como a maneira de fazer isso. De https://docs.gradle.org/current/userguide/declaring_dependencies.html#declaring_a_dependency_without_version :
Em seu
build.gradle
arquivo principal :Encapsular o bloco de dependências com uma verificação do plug-in Java (...
whenPluginAdded {
) não é estritamente necessário, mas então tratará da adição de um projeto não-Java à mesma construção.Então, em um projeto gradle filho, você pode simplesmente omitir a versão:
Os builds filhos ainda podem escolher especificar uma versão superior. Se uma versão inferior for especificada, ela será automaticamente atualizada para a versão na restrição.
fonte
allprojects
está bom.io.spring.gradle:dependency-management-plugin
O plugin tem problemas com a nova série Gradle 3.x, mas estável para a série 2.x. Para referência, veja o relatório de bug - Suporte para o Gradle 3 # 115No caso do Spring ( principal promotor do uso do BOM ) você pode terminar com:
Observe que
io.spring.platform:platform-bom
temorg.springframework.boot:spring-boot-starter-parent
como pai, por isso é compatível com Spring BootVocê pode verificar a resolução real da dependência por meio de:
ou com tarefa:
Leia a postagem oficial do blog Soring Melhor gerenciamento de dependências para o Gradle para entender o motivo da introdução
io.spring.gradle:dependency-management-plugin
.fonte
Você pode centralizar uma dependência usando o código abaixo:
No
gradle.properties
Em cada módulo, adicione a
build.gradle
:fonte
Esta postagem do blog sugere o gerenciamento de dependências e grupos como configurações: https://www.javacodegeeks.com/2016/05/manage-dependencies-gradle-multi-project-build.html
Eu mesmo não tentei, mas parece interessante.
Projeto raiz build.gradle
Subprojeto build.gradle
fonte
Para manter seu arquivo gradle limpo, podemos agrupar as dependências em um array e implementá-las posteriormente.
Portanto, o código final ficará assim:
fonte