我尝试按照grails文档中的说明进行操作,并在创建用于部署的war文件时尝试删除嵌入式tomcat服务器。
但是,即使在build.gradle中我也有:
compile
生成的WAR文件与org.springframework.boot修改provided
到In [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
问题是,为什么会发生这种情况?
答案 0 :(得分:2)
好吧,它看起来像这样工作,如果Grails文档对幕后发生的事情更加清楚,那将会很棒。
场景1:使用grails war
和compile "org.springframework.boot:spring-boot-starter-tomcat"
创建(生产)战争时......
解压缩/爆炸war文件,我看到Tomcat嵌入在WEB-INF lib文件夹(5个或更多罐子)中,包含所有其他必需的应用程序jar,还有一个文件夹org / springframework包含看起来像这样的类启动嵌入式Tomcat服务器所需的文件。
场景2:使用grails war
和provided "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"
}
老实说,我不了解内部工作原理,但我遇到了同样的问题,这就是解决方案提供的问题(没有双关语)。