提问者:小点点

Springboot Gradle插件不适用于Eclipse


当我使用这个springboot plugin springboot-gradle-plugin时,我的java项目没有在Eclipse中运行
它抛出了这个异常

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()
}

这一行它所做的就是将一个名为bootBuildInfo的Gradle任务添加到gradle中,并在运行此任务时创建此文件META-INF/build-info.properties。
在Java中,运行应用程序时,springboot会自动加载并读取META-INF/build-info.properties以创建bean。

当我在终端中使用gradle构建并运行生成的jar文件时,所有这些都可以工作,但当我通过Eclipse运行应用程序时,它不起作用。
它不会创建文件META-INF/build-info.properties当springboot尝试加载它时,会抛出bean未找到异常,因为它找不到文件。

如果我执行以下操作之一,项目将运行:
-在src/main/资源文件夹下手动创建META-INF/build-info.properties
-在build/Resources/main文件夹下手动创建META-INF/build-info.properties

这些方法都不需要,因为它不会自动更新build-info.properties


共1个答案

匿名用户

Gradle的Eclipse支持允许您配置在同步或构建项目时应该运行的任务。它需要Gradle 5.4或更高版本和Buildship(提供Gradle支持的Eclipse插件)3.1或更高版本。

您可以通过将以下内容添加到build. gradle来配置bootBuildInfo以在Eclipse构建项目时运行:

eclipse {
    autoBuildTasks bootBuildInfo
}

您可以在此博客文章中了解有关该功能的更多信息。