web-dev-qa-db-ja.com

コンテキストルートを設定するMaven Warアプリケーション

以下のmaven構成を使用してwarアプリケーションファイルを構築していますが、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>
8
krisdigitx

それには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を使用してwarをデプロイしている場合は、次の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を再起動し、プロジェクトプロパティに移動します。[プロパティ]-> [Web]に移動して、ルートコンテキスト値に反映された変更を表示するか、プロジェクトのデプロイメントアセンブリに移動して変更を表示します。

上記はm2Eclipseを使用して新しいプラグインを追加することで実現できることに注意してください。

3。アプリケーションサーバー固有:サーバーに依存しないアプローチに従うことをお勧めしますが、実行する必要がある場合は、サーバー固有の構成ファイルでルートコンテキストURLを構成できます。あなたは詳細なアプローチを見つけることができます ここ

11
Nikhil Bhide

アプリケーションは、独自のコンテキストパスを定義する必要はありません。それはコンテナ、あなたの場合はTomcatの仕事です。 Tomcatには、コンテキストパスの設定方法に関するいくつかのオプションがあります。コンテキストファイルでコンテキストパスを定義するか、マネージャーアプリケーションでコンテキストパスを指定できます。 Jenkinsまたは他のCIツールを使用する場合は、そこでコンテキストパスを指定することもできます。

Tomcatの特定のバージョンに関するオプションについてよく読んでください。

2
Matt

いくつかのオプションがあります。いくつかは 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

おそらく最終的な名前を変更するための最も速い方法(他のスタックオーバーフローの質問を参照)。

0
wemu