Я пытаюсь использовать VS Code для своего Java-приложения Spring Boot MVC. Я использую инструмент сборки Gradle. Я установил Расширение поддержки языка Java из RedHat. Всякий раз, когда я пытаюсь запустить свое приложение с помощью «gradle bootRun», оно никогда не прекращает выполнение, но останавливается на 75%.
Кроме того, всякий раз, когда я останавливаю задачу (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')
}
Такое поведение ожидается, и я думаю, что 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, но лучше, чем ожидалось. Спасибо.