Comment créer un multi-projet Spring Boot 2 à l'aide de Gradle.
Java
openjdk 10.0.2 2018-07-17
Gradle
4.10
Spring Boot
2.0.4
|-settings.gradle
|-build.gradle
|
|-foo/
| |-build.gradle
| :
|
`-bar/
|-build.gradle
:
foo
fait référence au projet bar
/build.gradle
buildscript {
ext {
springBootVersion = '2.0.4.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
subprojects {
apply plugin: "java"
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
repositories {
mavenCentral()
}
sourceCompatibility = 10
targetCompatibility = 10
}
foo
, bar
).
--ʻIo.spring.dependency-management` est un gars qui a rendu possible l'utilisation du mécanisme pour contrôler la version de la bibliothèque dépendante en utilisant la nomenclature de Maven, même dans Gradle.
--Référence: Si vous souhaitez utiliser BOM avec Gradle, il semble préférable d'utiliser le plugin de gestion des dépendances fourni par l'équipe Spring --Créer quelque chose / 063000)/foo/build.gradle
dependencies {
compile project(":bar")
compile "org.springframework.boot:spring-boot-starter-web"
}
--Déclarer une dépendance sur : bar
et une dépendance sur spring-boot-starter-web
> gradle :foo:compileJava
> Task :foo:compileJava FAILED
...\Foo.java:12:Erreur:Impossible de trouver le symbole
return new Bar().bar();
^
symbole:Barre de méthode()
endroit:Barre de classe
1 erreur
FAILURE: Build failed with an exception.
bar
La classe de projet ne peut pas être résolue et une erreur se produit.
--Vérifiez le résultat de la construction du projet bar
> dir /b bar\build\
classes
tmp
--bar
Le fichier jar du projet n'a pas été généré
bar.jar
est affiché sous bar \ build \ libs
, et je pense que le projet foo
était censé faire référence à ce jar.jar
ʻenabled soit réglé sur
false` par défaut.
jar
ne génère pas de fichier jar, mais que la tâche bootJar
le génère maintenant.java - Spring Boot multi module project with Gradle doesn't build - Stack Overflow
Cependant, en regardant le problème officiel de GitHub, le sous-projet (projet bar
) du côté dépendant n'est pas un projet Spring Boot en premier lieu, donc même le sous-projet ʻorg.springframework.boot` Il est expliqué que l'application du plug-in est incorrecte
«Je pense que c'est vrai, alors je vais régler le problème de cette façon.
/build.gradle
buildscript {
ext {
springBootVersion = '2.0.4.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
subprojects {
apply plugin: "java"
apply plugin: "io.spring.dependency-management"
repositories {
mavenCentral()
}
dependencyManagement {
imports {
mavenBom "org.springframework.boot:spring-boot-dependencies:$springBootVersion"
}
}
sourceCompatibility = 10
targetCompatibility = 10
}
/foo/build.gradle
apply plugin: "org.springframework.boot"
dependencies {
compile project(":bar")
compile "org.springframework.boot:spring-boot-starter-web"
}
> gradle :foo:compileJava
BUILD SUCCESSFUL in 17s
/build.gradle
buildscript {
ext {
springBootVersion = '2.0.4.RELEASE'
}
...
}
subprojects {
apply plugin: "java"
apply plugin: "io.spring.dependency-management"
...
dependencyManagement {
imports {
mavenBom "org.springframework.boot:spring-boot-dependencies:$springBootVersion"
}
}
...
}
pour tous les sous-projets --Et ajoutez
dependencyManagement` pour charger la nomenclature Spring Boot/foo/build.gradle
apply plugin: "org.springframework.boot"
...
--Appliquer ʻorg.springframework.bootuniquement sur le projet
foo`
Recommended Posts