我正在使用Maven来构建我们的应用程序
因此战争名称将是MyTest-1.00-SNAPSHOT1.0
。如果我在Tomcat中部署相同的名称,我将URL用作
//localhost:8080/MyTest-1.00-SNAPSHOT1.0
但我需要设置上下文路径MyTest,尽管将WAR名称部署为MyTest-1.00-SNAPSHOT1.0
。
我需要的URL是
//本地主机:8080 / MyTest的
总是即使WAR名称有版本等等。
建议我实现这种情况。
答案 0 :(得分:2)
最好的方法是直接生成名为MyTest.war
的war文件。为此,您可以在finalName
部分使用build
:
<build>
<finalName>MyTest.war</finalName>
...
</build>
编辑 :(添加评论产生的更多信息)
AFAIK我们可以在战争中包含任何可以自动设置与文件名无关的上下文的内容。
来自:Apache Tomcat 7 Configuration Reference - The Context Container # Naming
执行
autoDeploy
或deployOnStartup
操作时 主机,Web应用程序的名称和上下文路径是派生的 来自定义Web应用程序的文件的名称。 因此,上下文路径可能未在a中定义META-INF/context.xml
嵌入在应用程序中并且有一个 上下文名称,上下文路径,上下文之间的紧密关系 版本和基本文件名(名称减去任何.war或.xml 扩展名)。
还说:
如果要使用上下文路径部署WAR文件或目录 这与基本文件名无关,然后是以下之一 必须使用选项来防止双重部署:
- 禁用
中的所有autoDeploy
和deployOnStartup
并定义Contexts
server.xml
- 在主持人
appBase
之外找到WAR和/或目录,并使用带有context.xml
属性的docBase
文件进行定义。
但缺点是必须更新每个新版本的配置。
当你使用Maven时,可能有一个选项是部署战争的Apache Tomcat Maven Plugin。它允许配置不同的上下文路径(我从未使用过这个插件):
<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>
答案 1 :(得分:0)
在server.xml中,将上下文添加到<Host>
下:
您的情况是
<Context docBase="MyTest-1.00-SNAPSHOT1.war" path="/MyTest" reloadable="true"/>