tutorial - El complemento de dependencia de Gradle en un proyecto de arranque múltiple de módulos
spring boot install (1)
¿Cómo se ve una configuración correcta de Gradle en un proyecto de múltiples módulos que utiliza los complementos de Gradle spring-boot-dependencies spring-boot ?
Tengo la siguiente configuración de proyecto:
parent
|
+ build.gradle
|
+ alpha
| |
| + build.gradle
|
+ beta
| |
| + build.gradle
- El módulo
parentcontiene la configuración común del proyecto. - El módulo
alphaes un módulo en el que me gustaría importar dependencias usando los números de versiones especificados en el spring-boot-dependencies , pero el resultado es un jar estándar. - El módulo
betaes un módulo que depende dealphay el resultado es un archivo jar ejecutable Spring Boot (incluidas todas las dependencias). En consecuencia, este proyecto necesita tanto lasspring-boot-dependenciesspring-bootcomo el complemento despring-boot.
Para mantener los archivos de Gradle en SECO, he extraído scripts de módulos comunes al archivo build.gradle los padres.
Los intentos de ejecutar la $ gradle build utilizando la configuración del proyecto a continuación dan como resultado:
> Plugin with id ''io.spring.dependency-management'' not found.
padre gradle.build
allprojects {
group = "com.example"
version ''0.0.1-SNAPSHOT''
ext {
dependencyManagementPluginVersion = ''0.5.3.RELEASE''
springBootVersion = ''1.3.0.RC1''
}
apply plugin: ''java''
apply plugin: ''eclipse''
apply plugin: ''idea''
}
subprojects {
sourceCompatibility = 1.8
targetCompatibility = 1.8
buildscript {
repositories {
jcenter()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
classpath("io.spring.gradle:dependency-management-plugin:${dependencyManagementPluginVersion}")
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: ''io.spring.dependency-management''
dependencyManagement {
imports {
mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}")
// mavenBom("org.springframework.boot:spring-boot-starter-parent:${springBootVersion}")
}
}
}
alfa build.gradle
dependencies {
compile(''org.springframework:spring-web'')
}
beta gradle.build
apply plugin: ''spring-boot''
dependencies {
compile project('':alpha'')
compile(''org.springframework.boot:spring-boot-starter'')
compile(''org.springframework.boot:spring-boot-starter-web'')
}
Comentarios:
- El comportamiento del complemento
spring-bootse cambió en Spring Boot 1.3.0.M1 - Versión de Gradle: 2.8
- Versión Spring Boot 1.3.0.RC1
Resulta que parent/build.gradle debe reorganizar de la siguiente manera:
buildscript {
ext {
dependencyManagementPluginVersion = ''0.5.3.RELEASE''
springBootVersion = ''1.3.0.RC1''
}
repositories {
jcenter()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
classpath("io.spring.gradle:dependency-management-plugin:${dependencyManagementPluginVersion}")
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
allprojects {
group = "com.example"
version ''0.0.1-SNAPSHOT''
apply plugin: ''java''
apply plugin: ''eclipse''
apply plugin: ''idea''
}
subprojects {
sourceCompatibility = 1.8
targetCompatibility = 1.8
apply plugin: ''io.spring.dependency-management''
dependencyManagement {
imports {
mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}")
// mavenBom("org.springframework.boot:spring-boot-starter-parent:${springBootVersion}")
}
}
}
El problema radica en el hecho de que el bloque de buildscript para subproyectos se configuró bien pero ... en un lugar equivocado. Este bloque de subprojects se relaciona con los subproyectos, pero se evaluará en el script que se declaró y no se declararon dependencias para el complemento que estaba tratando de aplicar.