【问题标题】:Spring Boot use always latest tomcat versionSpring Boot 始终使用最新的 tomcat 版本
【发布时间】:2018-07-26 08:03:29
【问题描述】:

我有一个 Spring Boot 应用程序,我想始终使用最新的 tomcat 版本,甚至更好的是给定主要和次要版本的最新修补过的 tomcat 版本:

F.e 最新版本 8 或最新版本 8.5。 (如 8.5.32)

所以,如果我重建我的应用程序,我将获得最新的安全补丁。

我知道我可以在属性中手动提供一个具体版本。 但这很快就会过时,我不想一直手动调整它。

【问题讨论】:

  • 自动升级的问题是构建变得不可复制。但是,版本管理是构建/依赖管理工具的任务。如果您使用的是 Maven,您应该阅读以下内容:stackoverflow.com/questions/30571。但是,您可能需要检查dependency-check-maven 插件,而不是使用自动升级,这是一个 OWASP 工具,可以验证您的依赖项是否已过时或包含漏洞。
  • 这很好,但出于安全原因,我真的很想至少自动更新最新版本号。 F.e.在节点(通过 npm)中,这样做是一种非常普遍的做法。 maven 链接并没有真正帮助我,因为 spring boot 使用的 tomcat 版本不是自己的 maven 依赖项。
  • 可以改为自动升级Spring boot版本。这样您就可以保证您使用的是适用于 Spring Boot 的最新 Tomcat 版本。或者,您可以执行 sajib 所说的相同操作,但在 Maven 中。这意味着您自己包含 tomcat 依赖项,而不是依赖于 spring-boot-starter-tomcat.
  • @g00glen00b 在我的实际情况下,我想获得一个实际漏洞的补丁,该漏洞仅适用于 tomcat 8.5.32 或更高版本。最新的 Spring Boot(发布)版本依赖于尚未修补的嵌入式 tomcat 8.5.31。我真的很想去 8.5.X tomcat。如果只是 3. 版本级别会改变,我想它对于 Spring Boot 来说已经足够稳定了。是的,在 maven 中进行相同的操作是一种选择,但对我来说看起来有点 hacky。有没有办法直接说spring-boot-starter-tomcat使用嵌入式tomcat 8.5.X版?

标签: security spring-boot tomcat version-control


【解决方案1】:

如果你使用 gradle,那么你可以使用这个配置:

compile('org.springframework.boot:spring-boot-starter-web') {
    exclude module: "spring-boot-starter-tomcat"
}
compile 'org.apache.tomcat.embed:tomcat-embed-core:+'
compile 'org.apache.tomcat.embed:tomcat-embed-el:+'
compile 'org.apache.tomcat.embed:tomcat-embed-logging-juli:+'
compile 'org.apache.tomcat.embed:tomcat-embed-websocket:+'

如果您想提供特定版本,请使用version+

【讨论】:

  • 不错!但遗憾的是,我需要这个功能的项目不是用 gradle 构建的。但这可能是我考虑迁移到 gradle 的第一个原因......所以,谢谢你的提示。
猜你喜欢
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 2023-02-07
  • 1970-01-01
  • 2014-09-12
相关资源
最近更新 更多