Код Spring Boot, Gradle и Visual Studio - задача Gradle bootRun работает некорректно

Я пытаюсь использовать VS Code для своего Java-приложения Spring Boot MVC. Я использую инструмент сборки Gradle. Я установил Расширение поддержки языка Java из RedHat. Всякий раз, когда я пытаюсь запустить свое приложение с помощью «gradle bootRun», оно никогда не прекращает выполнение, но останавливается на 75%.

Код Spring Boot, Gradle и Visual Studio - задача Gradle bootRun работает некорректно

Кроме того, всякий раз, когда я останавливаю задачу (Ctrl + C), я получаю сообщение

the terminal process terminated with exit code: 2.

Я включил инструменты разработки Spring Boot в качестве зависимости, но приложение не перезагружается или перезагружается. Я пробовал использовать команду Force Java Recompilation, предоставляемую расширением Java, но безуспешно.

Кто-нибудь смог заставить код Spring Boot, Gradle и VS хорошо работать вместе?

Спасибо.

Обновлено:

Извините, я должен был включить свой файл build.gradle.

buildscript {
    ext {
        springBootVersion = '2.1.0.BUILD-SNAPSHOT'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}


plugins {
  id "org.kravemir.gradle.sass" version "1.2.2"
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.midamcorp'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 10

task ts(type:Exec) {
workingDir "./"
  commandLine  'cmd', '/c', 'tscCompile.bat'    
}

bootRun {
  args = ["--spring.profiles.active=dev" ]
}
sass {
    main {
        srcDir = file("$projectDir/src/main/sass")
        outDir = file("$projectDir/src/main/resources/static/css")
        exclude = "**/_*.scss"
        minify = true

    }
}

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-mail')
    compile('org.springframework.boot:spring-boot-starter-thymeleaf')
    compile('org.postgresql:postgresql:42.2.4')
    compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.4.0-b180725.0427'

    compile('com.github.mkopylec:recaptcha-spring-boot-starter:2.2.0')
    compile('org.springframework.boot:spring-boot-starter-web')
    runtime('org.springframework.boot:spring-boot-devtools')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
4 465
1

Ответы 1

Такое поведение ожидается, и я думаю, что bootRun работает правильно. Глядя на снимок экрана, кажется, что ваше веб-приложение было успешно запущено.

Процент, который показывает Gradle (в данном случае 75%), - это прогресс для всей сборки. Например, если сборка будет запускать 4 задачи, а bootRun - это 4-я задача, сборка будет завершена на 75%, когда задача bootRun вызывается, когда 3 из 4 задач завершены. Задача bootRun не заканчивается, потому что в ней размещено веб-приложение, и поэтому она будет работать бесконечно. Это означает, что Gradle продолжает показывать, что сборка завершена на 75%, поскольку, с точки зрения Gradle, последняя задача не выполнена.

Вы можете настроить задачу bootRun с помощью ignoreExitValue = true, чтобы Gradle не жаловался, когда вы останавливаете свое веб-приложение с помощью CTRL+C.

Спасибо. Мне никогда не удавалось перезапустить или перезагрузить в реальном времени для работы с командой Gradle (может быть, этого и следовало ожидать)? В случае, если это поможет кому-то другому, функции перезапуска Spring Boot и перезагрузки в реальном времени действительно хорошо работают с отладчиком, включенным в пакет расширений Java (marketplace.visualstudio.com/…). Исходя из Eclipse, я скептически относился к тому, что инструменты разработчика Boot будут так гладко работать с кодом VS (вот почему я пытался использовать Gradle), но они это сделали. Может быть, не так хорошо, как с Eclipse, но лучше, чем ожидалось. Спасибо.

KellyM 11.08.2018 02:43

Другие вопросы по теме