tomcat - 无法从 Grails 3.0.7 应用程序 war 中删除嵌入式 Tomcat

标签 tomcat grails grails-3.0

我尝试按照 grails 文档中的说明进行操作,并在创建用于部署的 war 文件时尝试删除嵌入式 tomcat 服务器。

但是,即使在 build.gradle 中我有:

...
dependencies {
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-autoconfigure"
provided "org.springframework.boot:spring-boot-starter-tomcat"
compile "org.grails:grails-dependencies"
compile "org.grails:grails-web-boot"
...

生成的 WAR 文件的大小与将 org.springframework.boot:spring-boot-starter-tomcat 的 compile 修改为 provided 之前的大小相同。

在浏览 WAR 文件时,我仍然看到以下文件:

spring-boot-starter-tomcat-1.2.5.RELEASE.jar tomcat-embed-core-8.0.23.jar tomcat-embed-el-8.0.23.jar tomcat-embed-logging-juli-8.0.23.jar tomcat-embed-websocket-8.0.23.jar

问题是,为什么会发生这种情况?

最佳答案

好吧,它似乎是这样工作的,如果 Grails 文档能够更清楚地说明幕后发生的事情,那就太好了。

场景 1:使用 grails war 创建(生产)war 并编译“org.springframework.boot:spring-boot-starter-tomcat” ...

解压/分解war文件,我看到Tomcat嵌入在WEB-INF lib文件夹(5个或更多jar)中,其中包含所有其他所需的应用程序jar,还有一个文件夹org/springframework,其中包含看起来是类的内容启动嵌入式 Tomcat 服务器所需的文件。

场景 2:使用 grails war 创建(生产)war 并提供“org.springframework.boot:spring-boot-starter-tomcat” ...

将 5 个或更多 Tomcat 嵌入式 jar 移出 WEB-INF/lib 并放置在 WEB-INF/lib-provided 中。 org/springframework 文件夹及其内容也不包含在内。

在本地安装上进行测试,您可以将此“场景 2”版本的 war 文件放入 Tomcat Web 应用程序目录中,并且应用程序可以顺利部署(lib 提供的文件夹及其 tomcat 嵌入的 jar 可能会被忽略) .

最后,创建了另一个版本的 war 文件:appname.war.original

这场 war 没有 WEB-INF/lib-provided 也没有 org/springframework 文件夹,并且大小更小(当然)。

这场 war 也部署正确。

为什么 tomcat 嵌入 jar 包含在场景 2 中完全让我困惑,但你知道了......

这里也有一个讨论:

https://jira.grails.org/browse/GRAILS-12078

在某种程度上,grails 文档是正确的。您可以通过添加提供的内容来删除嵌入式 tomcat 服务器

出于某种原因,它仍然将 jar 捆绑到名为 lib-provided 的文件夹中。

希望这对思考同样问题的其他人有所帮助。

关于tomcat - 无法从 Grails 3.0.7 应用程序 war 中删除嵌入式 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33263735/

相关文章:

ubuntu - 到达 Tomcat 时出现 ERR_CONNECTION_TIMED_OUT

java - 在不改变页面的情况下提取和处理textarea值形式

servlets - 在Grails 3应用程序中注册Servlet bean

linux - Jenkins 在每次作业运行后不断关闭

java - 说明 Resource Path Location Type Java compiler level 与安装的版本不匹配

mysql - 根据 MySQL 数据库中国家/语言特定的排序规则按名称对客户进行排序

grails - Gorm计数元素按天分组,没有时间

grails - bindData 包含嵌套参数

json - 如何使用 Grails3 为 JSON API 创建文档

grails - Grails 3:运行集成测试后出现IllegalStateException