设置上下文路径,与Tomcat中的WAR版本名称无关

时间:2014-12-11 09:18:58

标签: java maven tomcat contextpath

我正在使用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名称有版本等等。

建议我实现这种情况。

2 个答案:

答案 0 :(得分:2)

最好的方法是直接生成名为MyTest.war的war文件。为此,您可以在finalName部分使用build

<build>
    <finalName>MyTest.war</finalName>
    ...
</build>

编辑 :(添加评论产生的更多信息)

AFAIK我们可以在战争中包含任何可以自动设置与文件名无关的上下文的内容。

来自:Apache Tomcat 7 Configuration Reference - The Context Container # Naming

  

执行autoDeploydeployOnStartup操作时   主机,Web应用程序的名称和上下文路径是派生的   来自定义Web应用程序的文件的名称。   因此,上下文路径可能未在a中定义   META-INF/context.xml嵌入在应用程序中并且有一个   上下文名称,上下文路径,上下文之间的紧密关系   版本和基本文件名(名称减去任何.war或.xml   扩展名)。

还说:

  

如果要使用上下文路径部署WAR文件或目录   这与基本文件名无关,然后是以下之一   必须使用选项来防止双重部署:

     
      
  • 禁用autoDeploydeployOnStartup并定义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>

来自:Tomcat Maven Plugin Usage

答案 1 :(得分:0)

在server.xml中,将上下文添加到<Host>下:

  • docBase =“ fileName.war”
  • path =“ / path”

您的情况是 <Context docBase="MyTest-1.00-SNAPSHOT1.war" path="/MyTest" reloadable="true"/>