![](/img/trans.png)
[英]How to set up tomcat context path for web application? .war file name is coming infront of the application name in the url
[英]Set context path irrespective for WAR version name in Tomcat
我正在使用 Maven 构建我们的应用程序。
所以战争名称将是
MyTest-1.00-SNAPSHOT1.0<\/code> 。如果我在 Tomcat 中部署相同的名称,我将使用 URL 作为
//localhost:8080/MyTest-1.00-SNAPSHOT1.0
最好的方法是直接生成名为MyTest.war
的 war 文件。 为此,您可以在build
部分使用finalName
:
<build>
<finalName>MyTest.war</finalName>
...
</build>
编辑:(添加更多由评论产生的信息)
AFAIK 没有任何我们可以在战争中包含的东西可以自动设置与文件名无关的上下文。
来自: Apache Tomcat 7 配置参考 - 上下文容器#命名
当主机执行
autoDeploy
或deployOnStartup
操作时,Web 应用程序的名称和上下文路径源自定义 Web 应用程序的文件的名称。 因此,上下文路径可能未在嵌入应用程序的META-INF/context.xml
定义,并且上下文名称、上下文路径、上下文版本和基本文件名(名称减去任何 .war或 .xml 扩展名)的文件。
还说:
如果要使用与基本文件名无关的上下文路径部署 WAR 文件或目录,则必须使用以下选项之一来防止双重部署:
- 禁用
autoDeploy
和deployOnStartup
并在server.xml
定义所有Contexts
- 在主机的
appBase
之外找到 WAR 和/或目录,并使用带有docBase
属性的context.xml
文件来定义它。
但缺点是必须为每个新版本更新配置。
当您使用 Maven 时,也许可以选择使用Apache Tomcat Maven 插件来部署战争。 它允许配置不同的上下文路径(我从未使用过这个插件):
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/mycontext</path>
</configuration>
</plugin>
...
</plugins>
...
</build>
...
</project>
在 server.xml 中,在<Host>
下添加上下文:
你的情况是<Context docBase="MyTest-1.00-SNAPSHOT1.war" path="/MyTest" reloadable="true"/>
只需执行此操作(摘自我项目的 pom.xml 的片段)
换句话说,使用project\/build\/finalName<\/em> TWICE<\/strong> ,一次在 WAR 插件中,一次在标签层次结构的最外层。
实现OP所需的非常简单的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.