Зависимости подпроекта Gradle не работают, но те же самые зависимости прекрасно работают в основном Gradle - PullRequest
0 голосов
/ 08 мая 2019

Я работал над многомодульным проектом gradle для весенней загрузки devtools.Вот репозиторий github - Репозиторий GitHub

-spring-boot-dev-tools
-src/main
    -java/com/jhooq/springboot/devtools
    -resources
    -spring-boot-dev-tools.gradle ====- subproject gradle 
-.gitignore
-build.gradle ====- main gradle
-gradlew
-gradlew.bat
-settings.gradle

Вот так выглядит мой build.gradle (основной gradle): -

            buildscript {
            ext {
                    springBootVersion = '2.1.2.RELEASE'
                }
                repositories {
                    mavenCentral()
                }
                dependencies {
                    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
                }
                        }
            allprojects {
                group 'com.jhooq'
                version '1.0-SNAPSHOT'
            }
            subprojects{
                repositories {
                    mavenCentral()
                }
                apply plugin: 'java'
                apply plugin: 'idea'
                apply plugin: 'org.springframework.boot'
                apply plugin: 'io.spring.dependency-management'

                sourceCompatibility = 1.8
                targetCompatibility = 1.8

                dependencies {
                    compile ("org.springframework.boot:spring-boot-starter")
                    compile ("org.springframework.boot:spring-boot-starter-test")
                }
            }
            project(':spring-boot-dev-tools'){

                configurations {
                    developmentOnly
                    runtimeClasspath {
                        extendsFrom developmentOnly
                    }
                }

                dependencies {
                    compile project(':spring-boot-app')
                    compile ("org.springframework.boot:spring-boot-starter-web")
                    developmentOnly("org.springframework.boot:spring-boot-devtools")
                }

            }

Так что вы можетепосмотрим, помещу ли я compile ("org.springframework.boot:spring-boot-starter-web") внутрь project(':spring-boot-dev-tools') мое приложение весенней загрузки запускается на порту 8000 и продолжает работать

Но у меня возникает проблема, когда я перемещаю следующие скрипты gradle внутри spring-boot-dev-tools.gradle, тогда мое приложение весенней загрузки запускается изавершение работы, как в обычном приложении весенней загрузки.

project(':spring-boot-dev-tools'){

                configurations {
                    developmentOnly
                    runtimeClasspath {
                        extendsFrom developmentOnly
                    }
                }

                dependencies {
                    compile project(':spring-boot-app')
                    compile ("org.springframework.boot:spring-boot-starter-web")
                    developmentOnly("org.springframework.boot:spring-boot-devtools")
                }

Итак, если я подведу итог моей проблемы при перемещении зависимостей spring spring-boot-starter-web и spring-boot-devtools внутри подмодуля, то весенняя загрузка не работает / работает на порту: 8000но вместо этого он запускается и выключается, как обычное приложение с весенней загрузкой.

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Мне удалось заставить его работать, но решение, по-видимому, мне не нравится.Но в любом случае вот что я сделал -

  1. Я переместил зависимость подчиненного проекта / модуля в его собственный файл gradle и удалил его из build.gradle (основной проект gradle)
  2. Вместо «проекта компиляции» я переключился на «реализацию»

            configurations {
                developmentOnly
                runtimeClasspath {
                    extendsFrom developmentOnly
                }
            }
    
            dependencies {
                implementation {
                    'org.springframework.boot:spring-boot-devtools'
                    ':spring-boot-app'
                    'org.springframework.boot:spring-boot-starter-web'
    
                }
            }
    
0 голосов
/ 09 мая 2019

Существует ли причина, по которой вы определили основной класс в каждом отдельном пакете Java?

Я недавно сделал пример модульного монолита, который может вам помочь: Пример модульного монолита

Также нужно учесть несколько советов:

  • определяют общую конфигурацию gradle вместо ключевых слов "allprojects" и "subprojects".Разница между ними сводится к составлению по наследованию

  • использование ключевого слова реализация вместо compile .Таким образом, ваши зависимости больше не будут попадать в путь к классам компиляции потребителей.В противном случае используйте ключевое слово api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...