首页 文章

Spring Boot / Gradle / Tomcat将上下文路径设置为除.war名称之外的其他内容

提问于
浏览
3

我正在使用Spring Boot和Gradle来制造战争 .

war {
    baseName = 'foo'
    version =  '0.1.0'
}

由于war任务具有版本号,因此生成的war名称为 foo-0.1.0.war ,因此当部署到Tomcat时,上下文路径为 http://localhost/foo-0.1.0/

我'd like to use the context path ' bar '省略版本号并使用不同的路径 .

http://localhost/bar

这可能是使用Spring注释吗?我已经尝试更改 @RequestMapping 但这只会将上下文更改为 http://localhost/foo-0.1.0/bar

以下答案herehere尝试将上下文xml片段添加到 <catalina_home>/conf/Catalina/localhost/

<Context docBase="/foo-0.1.0" path="/bar" reloadable="true"> </Context>

但是虽然Tomcat是取消部署/foo-0.1.0我得到错误:

WARNING: A docBase C:\tools\apache-tomcat-7.0.53\webapps\foo-0.1.0 inside the host appBase has been specified, and will be ignored.

我是否错误地配置了Context?

如果设置上下文是正确的解决方案,我如何将其添加到我的项目,因为 spring 启动似乎在编译应用程序时生成web-inf文件夹?

我已经尝试将 context.xml 添加到 /src/main/webapp/META-INF ,虽然它包含在战争中它不会改变上下文路径

enter image description here

1 回答

  • 2

    问题的根本原因是使用Manger GUI来部署应用程序,即使提供了上下文,似乎使用“WAR文件部署”'工具'也会使用war名称

    Manager - war file to deploy

    使用Gradle Cargo plugin我已经能够根据需要使用 \src\main\resources 中的context.xml并使用build.gradle中的上下文来部署应用程序

    cargo {
        containerId = 'tomcat7x'
        port = 80
    
        deployable {
            context = 'bar'
        }
    ...
    }
    

相关问题