繁体   English   中英

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

[英]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 配置参考 - 上下文容器#命名

当主机执行autoDeploydeployOnStartup操作时,Web 应用程序的名称和上下文路径源自定义 Web 应用程序的文件的名称。 因此,上下文路径可能未在嵌入应用程序的META-INF/context.xml定义,并且上下文名称、上下文路径、上下文版本和基本文件名(名称减去任何 .war或 .xml 扩展名)的文件。

还说:

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

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

来自: Tomcat Maven 插件使用

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

  • docBase = "文件名.war"
  • 路径 = "/路径"

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

2022 更新<\/strong><\/h2>

只需执行此操作(摘自我项目的 pom.xml 的片段)

换句话说,使用project\/build\/finalName<\/em> TWICE<\/strong> ,一次在 WAR 插件中,一次在标签层次结构的最外层。

实现OP所需的非常简单的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM