部署到外部Tomcat服务器时的Grails 3.0上下文路径



我想将我的Grails 3.0应用程序部署到外部Tomcat服务器实例,而不是使用嵌入式tomcat 8服务器。我遇到的问题是,在将 WAR 文件部署到现有的 Tomcat 8 容器时,似乎无法设置上下文路径。

在 grails 2.x 行中,生成的META-INF/MANIFEST.MF文件包含 Webapp-Context 属性,该属性包含可以访问应用的上下文路径。对于 grails 3.0 并部署 WAR 文件,上下文路径只是 war 文件的名称(不带 .war)。

application.groovyapplication.yml配置文件中设置server.contextPath不起作用(这些似乎仅在使用嵌入式tomcat服务器时使用)。

如何在 Tomcat 8 上为 Grails 3.0 战争文件设置上下文路径?

我想出了一个解决方法。默认情况下,grails 3.0 会创建形式为 <app name>-<app version>.war 的 war 文件,这会导致默认上下文路径<app name>-<app version>

我使用的修复是编辑build.gradle文件以自定义 war 文件的名称。使用 Tomcat 8 的文档,我能够将 war.archiveName 属性更改为

archiveName = "${project.name}##${project.version}.war"

这使得Tomcat 8将##之前的部分作为上下文路径,将##之后的部分作为版本。这可以解决我遇到的问题。

最新更新