首页 > 解决方案 > Gradle - 如何防止 tomcat-embed-el 从 WEB-INF/lib 中“带走”

问题描述

我的目标: 我正在尝试在 WebSphere ND 8.5.5.15 中安装 Spring-boot v2.1.7.RELEASE Web 服务,该服务在 localhost/tomcat 上运行良好。

奇怪的是有几次我可以启动应用程序(安装后 - 我不确定,我不知道如何),但大多数时候(在我重试或更改一些东西之后),我可以' t 让应用程序在 WebSphere 中启动,我试图理解为什么。

所以现在,我想做的是: 我需要从运行时排除嵌入式 tomcat,这可以通过在 build.gradle 中添加这一行来轻松完成:

providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'

在这里理解-第 4 步,它也在删除与 EL 相关的类,所以我把它带回来了:

implementation 'org.springframework.boot:spring-boot-starter-validation'

但是现在,它不是“让课程回来”,我不明白为什么。在 WebSphere 中安装后,包含javax.el.E ​​LManager.class 的 tomcat-embed-el-9.0.22.jar将登陆../WEB-INF/lib-provided。我期望它在../WEB-INF/lib

我有一个“解决方案”,就是在 build.gradle 中添加一个 this:

implementation 'org.apache.tomcat.embed:tomcat-embed-el:9.0.24'

它正在工作,但我怀疑这是“正确”的方法,因为在我解决它之后,我开始遇到其他休眠问题,这是意料之外的,因为我已经在上面的链接中执行了第 3 步。

PS我使用的gradle版本是5.5:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-bin.zip

我也尝试使用 5.6,但一样。

标签: spring-bootbuild.gradle

解决方案


providedRuntime 'org.apache.tomcat.embed:tomcat-embed-core'
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-websocket'

is the correct approach.

The hibernate issue was a separate issue.


推荐阅读