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

时间:2015-10-21 15:48:25

标签: tomcat grails grails-3.0

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

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

compile

生成的WAR文件与org.springframework.boot修改providedIn [144]: df = pd.DataFrame(list1).merge(pd.DataFrame(list2)) 之前的大小相同:spring-boot-starter-tomcat。

在探索WAR文件时,我仍然看到以下文件:

弹簧引导起动Tomcat的1.2.5.RELEASE.jar Tomcat的嵌入芯-8.0.23.jar Tomcat的嵌入-EL-8.0.23.jar Tomcat的嵌入-测井炬力-8.0.23.jar Tomcat的嵌入-的WebSocket-8.0.23.jar

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

2 个答案:

答案 0 :(得分:2)

好吧,它看起来像这样工作,如果Grails文档对幕后发生的事情更加清楚,那将会很棒。

场景1:使用grails warcompile "org.springframework.boot:spring-boot-starter-tomcat"创建(生产)战争时......

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

场景2:使用grails warprovided "org.springframework.boot:spring-boot-starter-tomcat"创建(生产)战争时...

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

在本地安装上进行测试,您可以放弃此方案2' war文件的版本进入Tomcat web apps目录,应用程序部署顺利(lib提供的文件夹和它的tomcat嵌入jar可能被忽略)。

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

这场战争没有WEB-INF / lib提供的,也没有org / springframework文件夹,而且规模较小(当然)。

这场战争也正确部署。

为什么tomcat嵌入罐子包含在方案2中让我感到困惑但是你去了......

这里也有讨论:

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

在某种程度上,grails文档是正确的。您可以通过添加提供的

来删除嵌入式tomcat服务器

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

希望这可以帮助其他人解决同样的问题。

答案 1 :(得分:1)

在build.gradle中,添加以下内容:

springBoot {
    providedConfiguration = "provided"
}

老实说,我不了解内部工作原理,但我遇到了同样的问题,这就是解决方案提供的问题(没有双关语)。