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

时间:2015-06-23 10:24:03

标签: java spring tomcat gradle spring-boot

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

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

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

我想使用上下文路径' 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.

我是否错误地配置了上下文?

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

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

enter image description here

1 个答案:

答案 0 :(得分:2)

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

Manager - war file to deploy

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

cargo {
    containerId = 'tomcat7x'
    port = 80

    deployable {
        context = 'bar'
    }
...
}