Spring 引导 Maven 插件缺少堆栈跟踪

Spring Boot Maven Plugin missing stack trace

我最近将代码库从 Spring Boot 1.2.7 更新到 v2.0.0。在大多数情况下,这是成功的,但我注意到功能发生了意外变化,其中在启动期间发生故障时堆栈跟踪丢失。我不确定我是否遗漏了什么,这是故意的,或者这两个版本之间是否引入了错误。

该项目使用 Spring Boot Maven 插件。当包含 JVM 参数时,如果应用程序无法启动(可能是由于 Spring 布线不正确、端口已被使用等),将不会记录堆栈跟踪来解释应用程序启动失败的原因。如果省略 JVM 参数,堆栈跟踪将包含在日志中。在升级之前,使用 JVM 参数时会包含堆栈跟踪。

由于当包含 JVM 参数时插件会分叉 JVM,而应用程序不会以其他方式分叉 JVM,我想知道这是否与此有关。

为了帮助解决这个问题,我开始整理 stripped-down 版本的 POM 以及 "main" class。当项目使用 Logback 进行日志记录时,在创建简化版本的过程中,我发现 Log4J 是通过其他几个库传递包含的。当我从 class 路径中删除 Log4J 依赖项时,启动期间的日志记录按预期工作。

项目中加入Log4J pre-dates升级Spring引导版本。所以,这里肯定少了一块,因为我不知道是什么改变导致了破损。然而,前进的道路似乎很明确,因为 Log4J 不应包含在项目中。我很乐意接受任何其他答案,并提供更多关于可能发生的变化导致不同行为的信息,但如果没有,我会认为这个问题已解决。