当前位置: 首页 > 知识库问答 >
问题:

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

蔡辰钊
2023-03-14

我尝试遵循grails文档中的说明,并试图在创建用于部署的war文件时删除嵌入的tomcat服务器。

然而,即使在构建中。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修改为provide之前的大小相同。

在探索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

问题是,为什么会出现这种情况?

共有1个答案

栾烨华
2023-03-14

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

场景1:当使用Grails war创建(生产)war时,请编译“org.springframework.boot:spring-boot-starter-tomcat...

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

5个或更多的Tomcat嵌入式jar从WEB-INF/lib中移出,并放置在WEB-INF/lib中。org/SpringFramework文件夹及其内容也不包括在内。

在本地安装上进行测试,您可以将war文件的这个“场景2”版本放入Tomcat web apps目录中,然后应用程序就可以轻松地部署(lib提供的文件夹和它的Tomcat嵌入jars可能会被忽略)。

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

为什么tomcat嵌入式jar会包含在场景2中,我很困惑,但你可以....

这里也有关于它的讨论:

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

 类似资料:
  • 我在Tomcat中安装了一个.war应用程序,但一定有什么问题发生了,因为在Tomcat管理器中,唯一活动的按钮是“启动”,而取消部署按钮是灰色的。按下“开始”按钮会导致PC挂起。我试着从webapps中删除.war文件和已解压缩的文件,然后卸载并重新安装Tomcat,将.war文件添加回来,然后启动Tomcat,但manager仍然没有显示undeploy选项。任何关于我可以在哪里寻找碎片的指示

  • 我正在使用gradle构建一个Spring Boot应用程序,我希望从war中删除文件,因为该文件将从外部加载(它运行在tomcat容器中,而不是嵌入式的)。 我查看了StackOverflow和Gradle文档,试图找出该做什么,但我不知道该绑定到哪个阶段,以及在创建war之前还是之后排除该文件。处理文件似乎也有多种方法。 我相信Maven使用作为等价物。

  • 我试图使用Intellij启动一个Spring应用程序,但我得到了下面的错误。我尝试将Tomcat依赖项放在pom.xml中,但这并不奏效(我后来也发现不需要这样做)。 应用程序应该可以正常工作,因为它已经在一个同事的电脑上工作了,所以我不太确定为什么我会得到这个错误。我已经尝试了几个修复,我在这里遇到了,但没有一个奏效。下面是我的:

  • 我制作了一个非常基本的web应用程序,它只有一个html页面。我把它当作战争输出。 现在我创建了一个嵌入式jetty服务器。 } 我为这个嵌入式服务器创建了一个jar。但是当我试图通过嵌入式服务器运行我的web应用程序时,我得到以下错误。 C:\users\user>Java-jar C:\users\user\desktop\jetty\webserver.jar null 我使用过jetty

  • 我使用的是intellij,而不是手动从war文件中删除tomcat JAR,更好的方法是在编译期间删除它们。 我需要执行此操作,因为我收到以下错误: 然而,当我移除tomcat Jar时,一切都很好。 我正在使用Gradle,我想在使用JBoss运行tomcat时删除它。然而,当我使用spring-boot运行它时,我想要/需要它在那里。

  • 我已经通过谷歌页面上的指南直接创建了一个TWA Progressive Web应用程序: https://developers.google.com/web/updates/2019/02/using-twa 并在应用程序和AssetLink中添加了资产报表。我的两个域名上的json与谷歌网站上的描述完全相同 打开应用程序时,不会显示应用程序URL栏。然而,如果我点击一个链接进入我的第二个域名,就