2

我有一个之前创建并部署在 Tomcat7 中的 REST Web 服务。我想将它部署在 Jetty 上,如上一个问题中所述,我创建了一个 Maven 项目并在那里复制了我的文件并配置了依赖项,我可以成功地从 Eclipse 运行 Maven 安装。

这是我build在 POM.xml 中的一部分:

 <build>
    <plugins>
        <plugin>
             <groupId>org.mortbay.jetty</groupId>
             <artifactId>maven-jetty-plugin</artifactId>
        </plugin>

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <dependentWarExcludes></dependentWarExcludes>
                <webappDirectory>
                    WebContent
                </webappDirectory>

            </configuration>
        </plugin>
    </plugins>
</build> 

我按照此处的说明使用 maven jetty 插件(我不确定这是否需要)。这里的问题是如何从 Eclipse 中部署我的 maven 项目,以便我可以访问 http:localhost:8080/myproject 并查看我的项目是否正常工作?

编辑:

我过去在Tomcat上运行服务的方式是右键单击项目并单击Run As -> Run on server(在eclipse服务器中配置)

我正在使用 eclipse Indigo、Maven 3 和 jetty 8。我还使用 jersey 作为 Web 服务。

4

1 回答 1

2

在这里,您混合了两种不同的东西:

  1. 使用 Eclipse 服务器插件作为 Eclipse 的 Tomcat 插件运行您的 Web 应用程序。
  2. 使用 Maven 插件作为 Jetty Maven 插件运行您的 Web 应用程序。Tomcat 也有 Maven 插件。

话虽如此,看看这个答案,它描述了如何配置 Eclipse 来运行 Maven 插件(它可能会根据 Eclipse 版本而改变,但想法会相似)

编辑:

如果您只想从 Maven 运行 jetty,只需使用以下命令行:

mvn jetty:run

但是,无论如何,我建议您在 pom 文件中指明 Maven jetty 插件版本(如果您不这样做,Maven 会警告您)。

已编辑 2

首先,更新你的 jetty maven 插件版本:

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>8.0.0.M2</version>
</plugin>

第二。您正在使用两个插件,一个用于构建战争文件(maven-war-plugin),另一个用于在码头上运行您的应用程序(jetty-maven-plugin)。请记住,jetty 认为您的项目具有标准的 maven 项目结构,这意味着,它将在 /src/main/webapp 中查找您的 Web 应用程序内容,但看起来不在这里。在你的 war 插件配置中,你指定你的 web 内容在 WebContent 中,所以告诉 jetty 插件那个目录在那里,以及你告诉它给 war 插件:

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>8.0.0.M2</version>
    <configuration>
        <webAppSourceDirectory>/WebContent</webAppSourceDirectory>             
        <webXml>/over/here/web.xml</webXml>
        <jettyEnvXml>/src/over/here/jetty-env.xml</jettyEnvXml>
        <classesDirectory>/somewhere/else</classesDirectory>
    <configuration>
</plugin>

请参阅文档。当然,最好使用标准的 maven 项目结构,这样您就不需要告诉 jetty 东西在哪里。

于 2012-07-30T11:45:56.530 回答