Spring Boot Gradle Tomcat 8

Posted

技术标签:

【中文标题】Spring Boot Gradle Tomcat 8【英文标题】: 【发布时间】:2014-05-02 12:03:01 【问题描述】:

Spring Boot 参考指南提供了通过在 Maven 中设置自定义属性来升级到 Tomcat 8 的说明:

<properties>
  <tomcat.version>8.0.3</tomcat.version>
</properties>

在 Gradle 构建中执行相同操作的等效方法是什么?

我尝试了以下方法无济于事。它在应用启动时保持在 7.0.52 版本。

buildscript 
  ...    
  ext['tomcat.version'] = '8.0.3'
  ...

【问题讨论】:

Spring Boot 1.2 默认使用 tomcat 8。 github.com/spring-projects/spring-boot/wiki/… 【参考方案1】:

Gradle 没有等效的“父 pom”,因此您必须显式调用依赖项。因为它很时髦,你可能可以通过编程来完成它,比如:

configurations.all 
  resolutionStrategy.eachDependency  DependencyResolveDetails details ->
    if (details.requested.group == 'org.apache.tomcat.embed') 
        details.useVersion '8.0.3'
    
  
  

我们可以为 Spring Boot Gradle 插件添加一些对版本属性的支持(请随意在 github 中打开问题),但它可能必须是可选的。

【讨论】:

【参考方案2】:

请看一下 Gretty 插件:它支持 Tomcat 8(以及 Tomcat 7、Jetty 7/8/9)和开箱即用的 SpringBoot。无需调整依赖项。

https://github.com/akhikhl/gretty

披露:我是 Gretty 插件的作者。

【讨论】:

【参考方案3】:

设置我使用的tomcat版本:

    dependencies 
    compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") 
        exclude module: "spring-boot-starter-tomcat"
    
    compile 'org.springframework.boot:spring-boot-starter-tomcat:1.1.8.RELEASE'

您只需要找到适合您需求的 spring-boot-starter-tomcat

【讨论】:

【参考方案4】:

这就是我如何配置 Spring Boot1.3.3 以与 Tomcat v8.0.33 一起使用。默认情况下,它适用于版本 8.0.32,并且该版本存在 Websocket 问题。

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

【讨论】:

以上是关于Spring Boot Gradle Tomcat 8的主要内容,如果未能解决你的问题,请参考以下文章

Gradle Spring Boot 项目不能在 Tomcat 中作为 WAR 工作

Spring Boot/Gradle/Tomcat 将上下文路径设置为 .war 名称以外的内容

CTRL + C w / Spring Boot&Gradle Kills Gradle Daemon

如何将简单的 Spring Boot(带有 Gradle 构建系统)部署到 Apache Tomcat(真实服务器,而不是嵌入服务器)?

CTRL+C w/ Spring Boot & Gradle 杀死 Gradle 守护进程

在IDEA中如何把Gradle下的Spring boot项目打包并部署到服务器