[JAVA] Multi-projets Spring Boot 2 avec Gradle

Comment créer un multi-projet Spring Boot 2 à l'aide de Gradle.

environnement

Java

openjdk 10.0.2 2018-07-17

Gradle

4.10

Spring Boot

2.0.4

Cible multi-projets

|-settings.gradle
|-build.gradle
|
|-foo/
| |-build.gradle
| :
|
`-bar/
  |-build.gradle
  :

Mauvais réglage du modèle

/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/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

Compiler le résultat

> 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.

La description

--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é

solution de contournement

java - Spring Boot multi module project with Gradle doesn't build - Stack Overflow

Gradle multi-project build dependencies of subprojects cannot be resolved · Issue #11594 · spring-projects/spring-boot

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.

OK motif

/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"
}

Compiler le résultat

> gradle :foo:compileJava
BUILD SUCCESSFUL in 17s

La description

/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"
        }
    }

    ...
}

/foo/build.gradle


apply plugin: "org.springframework.boot"

...

--Appliquer ʻorg.springframework.bootuniquement sur le projetfoo`

Recommended Posts

Multi-projets Spring Boot 2 avec Gradle
Implémenter l'application Spring Boot dans Gradle
Créer une image Spring Boot + Docker avec Gradle
Conseils Java - Créez un projet Spring Boot avec Gradle
Je voulais classer la botte à ressort dans un multi-projet
Afficher la tâche Gradle dans le projet Spring Boot
Définir le paramètre contextuel dans Spring Boot
Changements majeurs dans Spring Boot 1.5
NoHttpResponseException dans Spring Boot + WireMock
Spring Boot Hello World dans Eclipse
Développement d'applications Spring Boot dans Eclipse
◆ Spring Boot + note de construction de l'environnement gradle
Écrire du code de test avec Spring Boot
Créer un JAR exécutable multi-projets avec Gradle
Implémenter l'API REST avec Spring Boot
Qu'est-ce que @Autowired dans Spring Boot?
Comment utiliser Thymeleaf avec Spring Boot
Lancer un (ancien) projet Spring Boot avec IntelliJ
Priorité d'accès aux fichiers statiques dans Spring Boot
Sortie du journal Spring Boot au format json
Mémorandum de téléchargement de fichier local avec Spring Boot
Défi Spring Boot
Créer un projet Java Spring Boot avec IntelliJ
Desserrer la vérification de la syntaxe de Thymeleaf dans Spring Boot
[Entraine toi! ] Affichez Hello World avec Spring Boot
Utiliser la méthode de requête DynamoDB avec Spring Boot
Forme de botte de printemps
Configurer un multi-projet avec des sous-répertoires dans Gradle
Résumé des paramètres initiaux pour Spring Boot, Doma2, Gradle
Spring Boot Rappelez-vous
gae + botte à ressort
DI SessionScope Bean dans le filtre Spring Boot 2
(IntelliJ + gradle) Hello World avec Spring Boot
Ajoutez une botte de printemps et un dégradé à éclipse
Modifier le délai d'expiration de la session dans Spring Boot
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
Cookie SameSite dans Spring Boot (Spring Web MVC + Tomcat)
Testez le contrôleur avec Mock MVC dans Spring Boot
Traitement asynchrone avec exécution régulière dans Spring Boot
Exécuter un projet Spring Boot avec VS Code
Exécutez l'application Scala avec Spring Boot via Gradle
Utiliser le filtre de servlet avec Spring Boot [compatible Spring Boot 1.x, 2.x]
Comment ajouter un chemin de classe dans Spring Boot
Créez des projets Spring Boot par environnement avec Gradle
Comment se lier avec un fichier de propriétés dans Spring Boot
Annotations utilisées dans les outils de gestion des tâches Spring Boot
Inject Logger au printemps
Fiche d'apprentissage SPRING BOOT 01
Botte de printemps + Heroku Postgres
Rédaction de mémo de démarrage de printemps (1)
Fiche d'apprentissage SPRING BOOT 02
Aide-mémoire Spring Boot2
Gestion des exceptions Spring Boot
Mappage du servlet Spring Boot
Environnement de développement-développement Spring Boot-
Procédure d'apprentissage Spring Boot
Utilisez Interceptor au printemps
Apprentissage de Spring Boot [Début]
Microservices dans Spring Cloud
Rédaction de mémos de démarrage de printemps (2)