gpt4 book ai didi

grails - 在 Grails 3.1.7 中构建一场 slim 的 war

转载 作者:行者123 更新时间:2023-12-01 13:43:41 24 4
gpt4 key购买 nike

我想组装一个没有任何 jar 文件的 war 文件(我已经将它们复制到我的 /opt/tomcat8/lib 目录)。

我阅读了关于-nojars options ,但它不适用于 Grails 3.1.7。

然后我尝试自定义我的 build.gradle:

war{
rootSpec.exclude "**/*.jar"
}

由此产生的 war 确实变得非常小~1 MB。虽然当我将它部署到 tomcat 中并调用 http://host:8080/ 时,我得到了

javax.servlet.ServletException: Could not resolve view with name '/error' in servlet with name 'grailsDispatcherServlet' org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1229) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1029) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:973) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)

构建小型 war 的正确方法是什么?

旁注:

该应用程序仅包含几个域类和脚手架 Controller 。 grails create-app

之后没有修改 View

最佳答案

首先,在您的 build.gradle 中,您必须将所有 compile 依赖项的范围更改为 provided。出于某种原因,必须保留 runtime 依赖项才能使 Grails 工作(对此我还没有解释)。

例如compile "org.grails:grails-core"将被更改为provided "org.grails:grails-core"

这将停止 gradle 将库打包到 WEB-INF/lib,但它现在将创建包含所有依赖项的新文件夹 WEB-INF/lib-provided。这些库不应该对“外部”应用程序服务器可见,但需要执行存档(在本例中为 war )。这是由 bootRepackage 任务完成的。

您可以通过将此命令添加到您的 build.gradle 来禁用 bootRepackage 任务:

bootRepackage.enabled = false

现在您的 war 任务应该创建没有任何 jars 的存档。

关于grails - 在 Grails 3.1.7 中构建一场 slim 的 war ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37659196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com