world tutorial springframework plugin org not hello create could bootjar gradle spring-boot dependency-management spring-boot-gradle-plugin

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 parent contiene la configuración común del proyecto.
  • El módulo alpha es 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 beta es un módulo que depende de alpha y el resultado es un archivo jar ejecutable Spring Boot (incluidas todas las dependencias). En consecuencia, este proyecto necesita tanto las spring-boot-dependencies spring-boot como el complemento de spring-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-boot se 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.