簡體   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