【问题标题】:maven war application setting up contextrootMaven 战争应用程序设置 contextroot
【发布时间】:2016-12-04 07:03:03
【问题描述】:

我正在使用下面的 maven 配置构建一个战争应用程序文件,但是当我在 tomcat 中启动应用程序时,上下文根设置为“/CommerceApi-0.0.1-SNAPSHOT/”

我希望将其设置为“/api”,

有什么想法吗?下面是 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>CommerceApi</groupId>
  <artifactId>CommerceApi</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
   <dependencies>
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>
    <dependency>
      <groupId>CommerceApiCommon</groupId>
      <artifactId>CommerceApiCommon</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

【问题讨论】:

    标签: java linux maven tomcat


    【解决方案1】:

    您的应用程序不负责定义自己的上下文路径。这是容器的任务,在你的例子中是 Tomcat。 Tomcat 提供了几个如何设置上下文路径的选项。您可以在上下文文件中定义上下文路径或在管理器应用程序中指定上下文路径。如果您使用 Jenkins 或其他 CI 工具,您也可以在那里指定上下文路径。

    最好阅读有关特定 Tomcat 版本的选项。

    【讨论】:

    • 为什么服务器tomcat被称为容器?是不是类似于人们所说的容器化(docker等)? #NewbieHere
    • Container 对于不同的上下文来说肯定是一个非常常用的词。在这里,它是 web 容器servlet 容器 的简短版本。实际上,我没有看到与 Docker 有太多相似之处。
    【解决方案2】:

    有多种选择。有些在Define Servlet Context in WAR-File中有所描述

    使用 tomcat 你还可以定义 context.xml 路径:http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#containerConfigXML 并可能在那里配置它:https://tomcat.apache.org/tomcat-7.0-doc/config/context.html

    os 可能更改最终名称的最快方式(请参阅其他 stackoverflow 问题)。

    【讨论】:

      【解决方案3】:

      有以下三种方法:

      1.如果您没有使用 Eclipse/MyEclipse 将应用程序部署到应用程序服务器上 -

      你需要使用maven-war插件,你可以在配置部分指定warName。

      <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.0.0</version>
          <configuration>
              <warName>customwarname</warName>
          </configuration>
      </plugin>
      

      2。如果您使用 Eclipse/MyEclipse 将应用程序部署到应用程序服务器上 -

      如果你正在使用 eclipse 并使用 eclipse 部署战争,那么你可以使用以下 maven 配置。

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.10</version>
          <configuration>
              <wtpversion>2.0</wtpversion>
              <wtpContextName>customwarname</wtpContextName>
          </configuration>
      </plugin>
      

      然后,运行以下命令来更新 eclipse 设置。

         mvn eclipse:eclipse -Dwtpversion=2.0
      

      重新启动 Eclipse,然后导航到项目属性,Properties->Web 以查看根上下文值中反映的更改或导航到项目的部署程序集以查看更改

      请注意,上面可以通过添加新插件使用 m2eclipse 来实现。

      3.特定于应用服务器: 您应该更喜欢遵循与服务器无关的方法,但如果需要这样做,那么您可以在服务器特定的配置文件中配置根上下文 url。你可以找到详细的方法here

      【讨论】:

      • maven-eclipse-pluginretired...有替代品吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2012-03-29
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多