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(真实服务器,而不是嵌入服务器)?