Плагин Springboot Gradle не работает с Eclipse - PullRequest
0 голосов
/ 09 февраля 2020

Проблема

Мой java проект не запускается в Eclipse, когда я использую этот плагин springboot springboot-gradle-plugin
Выдает это исключение

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
[2020-02-09 15:45:27.825] - 12256 GRAVE [main] --- org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter: 

***************************
APPLICATION FAILED TO START
***************************

Description:

Constructor in com.example.demo.VersionController required a bean of type 'org.springframework.boot.info.BuildProperties' that could not be found.
    - Bean method 'buildProperties' in 'ProjectInfoAutoConfiguration' not loaded because @ConditionalOnResource did not find resource '${spring.info.build.location:classpath:META-INF/build-info.properties}'

Пример проекта с проблемой

Пример хранилища с этой проблемой можно найти здесь: springboot-gradle-plugin-issue
Чтобы увидеть эту проблему, вам нужно запустить этот проект с Eclipse (я запускаю его с eclipse 2019-09)

Что этот проект делает

Этот java проект использует gradle с этим плагином spring-boot-gradle -plugin .
Этот проект печатает в консоли версию приложения, объявленную в моем файле build.gradle. В моем файле gradle.build я включаю следующие строки:

springBoot {
    buildInfo()
}

В этих строках все, что он делает, добавляет задачу Gradle, называемую bootBuildInfo , в gradle, и во время выполнения этой задачи она создает файл META-INF / build-info.properties .
В Java при запуске приложения springboot автоматически загружается и читает META-INF / build-info.properties создать бин.

Проблема с Eclipse

Все это работает, когда я собираю gradle в терминале и запускаю сгенерированный файл jar, но он не работает когда я запускаю свое приложение через Eclipse.
Он не создает файл META-INF / build-info.properties , и когда springboot пытается загрузить его, генерируется исключение bean not found потому что не удалось найти файл.

Обходные пути найдены

Проект запустится, если я выполню одно из следующих действий:
- вручную создайте META-INF / build- info.properties в папке src / main / resources
- вручную ели META-INF / build-info.properties в папке build / resources / main

Ни один из этих подходов не нужен, поскольку он не обновляет build-info.properties автоматически

1 Ответ

1 голос
/ 11 февраля 2020

Поддержка Eclipse от Gradle позволяет настраивать задачи, которые должны выполняться при синхронизации или сборке проекта. Для этого требуется Gradle 5.4 или более поздняя версия и Buildship (плагин Eclipse, обеспечивающий поддержку Gradle) 3.1 или более поздняя версия.

Вы можете настроить bootBuildInfo для запуска всякий раз, когда Eclipse создает проект, добавив следующее к build.gradle:

eclipse {
    autoBuildTasks bootBuildInfo
}

Подробнее о функциональности можно узнать в этом сообщении в блоге .

...