使用Maven pom.xml将War文件部署到Tomcat根目录

时间:2012-05-04 13:02:39

标签: eclipse tomcat web-applications maven pom.xml

假设以下pom.xml maven会构建一个client.war文件,当部署到Tomcat时,该文件将具有URL www.server.com:8080/client/

需要更改什么才能在服务器根目录www.server.com:8080/上找到应用程序?

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>...</groupId>
    <artifactId>client</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>...</name>
    <url>http://maven.apache.org</url>
    <build>
        <resources>
            <resource>
                <directory>target/generated-resources</directory>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            ...
        </plugins>
        <finalName>client</finalName>
    </build>
...
</project>

3 个答案:

答案 0 :(得分:8)

如果你愿意,我相信你可以离开名为client.war的战争。然后配置tomcat6 plugin,设置如下路径:

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat6-maven-plugin</artifactId>
  <version>2.0-beta-1</version>
      <!-- put the configuration in an execution if you want to... -->
      <configuration>
        <path>/</path>
        <warFile>${project.build.directory}/client.war</warFile>
        <!-- other config options here -->
      </configuration>
</plugin>

我没有使用tomcat7版本的插件,但我猜它是类似的。

答案 1 :(得分:2)

由于您正在使用eclipse,tomcat和maven的组合,我将猜测m2e-wtp插件在这里使用。有一个FAQ that addresses this。这也显示了如何以特定于maven的方式更改您的上下文根(使用war插件来指定war的finalName),这会导致正确命名的war文件(例如其他答案中提到的ROOT.war。) p>

答案 2 :(得分:0)

Maven war插件(默认情况下在super-pom上定义)只会生成war文件。您可以在Tomcat上设置应用程序。如果要将“部署到容器”添加到maven构建中,请使用Tomcat Maven PluginCargo Maven Plugin

实际上,你想要的与Maven无关。将你的战争名称设置为ROOT.war应该这样做(在你的构建部分<finalName>ROOT</finalName>),但如果你想将context.xml添加到war文件中,你可以做类似的事情(假设{{1是由maven定义的webapp文件夹:

src/main/webapp

`