Мультимодульный проект Gradle - переход с Spring-Boot 1.5 на 2.1 - PullRequest
0 голосов
/ 01 февраля 2019

Я бы хотел перенести многомодульный проект spring-boot 1.5 на spring-boot 2.1.Это простой проект (4.9), но почему-то я не могу его решить.

С подпружиненной загрузкой 1.5.9 приложение прекрасно компилируется, и модули, зависящие от других модулей, также могут разрешать классы.

При обновлении до spring-boot 2.0 или 2.1 я не могу получить один модуль, разрешающий классы другого модуля.

В моем проекте api проекта зависит от библиотеки.Опять же, этот build.gradle отлично работает для меня с Spring Boot 1.5.9.Я рад любой помощи.

buildscript {
    ext { springBootVersion = '1.5.9.RELEASE' }
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "o.s.b:spring-boot-gradle-plugin:${springBootVersion}"
    }
}

allprojects {
    apply plugin: 'eclipse'
    apply plugin: 'maven'
    apply plugin: 'maven-publish'

    group = 'n.h.f.calculator'
    version = "0.1.0-SNAPSHOT"

}

subprojects {
    apply plugin: 'groovy'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    sourceCompatibility = JavaVersion.VERSION_1_8

    repositories {
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        compile       'o.c.groovy:groovy'
        testCompile   'o.s.b:spring-boot-starter-test'
    }
}

project(':' + rootProject.name + '-library') {
    dependencies {
        compile 'org.springframework.boot:spring-boot-starter'
    }
}

project(':' + rootProject.name + '-api') {
    dependencies {
        compile project (':' + rootProject.name + '-library')
        compile         'o.s.b:spring-boot-starter-web'
    }
}

Я стал тогда проблемой компилятора из модуля *-api, который говорит, что классы модуля *-lib не могут быть решены.

Пример

C:\Development\Projects\Immosoft\financial-calculator\api\src\main\groovy\net\hemisoft\financial\calculator\api\BasicApi.groovy: 7: unable to resolve class net.hemisoft.financial.calculator.library.utils.BasicCalculator
@ line 7, column 1.
import net.hemisoft.financial.calculator.library.utils.BasicCalculator

1 Ответ

0 голосов
/ 10 февраля 2019

Я нашел решение.Волшебные слова jar { enabled = true } и bootJar { enabled = false }.Я поместил его в проект, который содержит библиотеку (базовые классы) для приложения.

buildscript {
    ext {
        springBootVersion = '2.1.2.RELEASE'
    }
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath "o.s.boot:spring-boot-gradle-plugin:${springBootVersion}"
    }
}

...

project(':' + rootProject.name + '-library') {
    dependencies {
        compile 'o.s.boot:spring-boot-starter'
    }

    jar {
        enabled = true
    }

    bootJar {
        enabled = false
    }
}

Теперь проект компилируется при сборке с помощью gradle.

...