如何在Eclipse中运行Tomcat中的Maven项目

时间:2009-05-28 15:13:13

标签: eclipse tomcat maven-2

我正在运行一个多级maven项目。它将webapps打包为WAR,它依赖于打包为JAR文件的组件

我所做的大多数代码都属于那些JAR文件。

要测试更改,我需要重新打包JAR和WAR,并在tomcat中进行外部部署。

我尝试使用sysdeo-tomcat-maven-eclipse插件,但它没有按预期工作。

请告知是否有人解决此问题

由于 拉夫

4 个答案:

答案 0 :(得分:38)

使用Maven Eclipse Integration插件

我遇到问题我发现尝试使用命令行工具 mvn 进行调试很有帮助。根据经验,如果它在没有错误命令行的情况下构建,那么你可以在Eclipse中运行它(但是tomcat也有问题,所以你可能需要每隔一段时间清理一次工作目录并清除缓存)。

除此之外,我真的建议使用Maven Eclipse Integration插件!我使用Sonatypes插件repo http://m2eclipse.sonatype.org/sites/m2e中的版本。 eclipse repo上有一个更新的集成,但它的工作方式不同,我还没来得及调查它的用途。

如果您的项目是模块化的,那么将根项目设置为一个简单的项目(没有Java,没有Java EE)可能会有所帮助。然后将子项目导入为简单的Java项目(同样没有Java EE)。您仍然可以激活依赖关系管理并通过项目运行构建目标。

Import modules

您只需按依赖项选择目标项目所需的子模块。

Select dependencies to include as sub projects

对于构建war文件的任何项目,激活java ee的facets并在进一步配置下配置上下文根(这只能执行一次,为什么屏幕截图中缺少该选项,所以这样做右)。

Select your decired facets

然后为您的指定项目设置部署程序集。应将所有兄弟项目(在您的工作区中处于活动状态)添加到部署程序集中,还需要将 maven依赖项构建路径条目添加到部署程序集。设置完成后,您可以使用Run on server指令启动Web应用程序。

Setup deployment assembly

我发现在编写maven项目时始终保持纯Java模式很有用。 Eclipse中的任何智能视图只会模糊场景背后发生的事情,无论如何都可以通过激活指定的项目来访问特定的编辑器!

答案 1 :(得分:10)

我使用eclipse webtools插件,并从中运行我的Tomcat。它有一个重新发布方法,也可以发布jar(如果没有,你只需清理目录并重新发布)。

在pom文件中,您应该具有以下行,以便自动支持Web工具

<build>
    ...
    <plugins>
        <plugin>
            <artifactId>maven-eclipse-plugin</artifactId>
            <configuration>
                <wtpversion>1.5</wtpversion>
                ...
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build> 

答案 2 :(得分:2)

使用Maven Eclipse Integration插件和Web Runner

设置一个指定项目(已在另一个答案中描述),使用最新的Maven Eclipse Integration插件。这应该位于您的eclipse版本的更新站点下。就我而言,Indigo - http://download.eclipse.org/releases/indigo(/ Collaboration / Maven Integration for Eclipse)。

作为内置服务器的替代方案,它经常无法更新部署程序集中的工作区依赖项(对于tomcat)我建议使用类似于maven指令jetty的Sonatype Web应用程序启动器 Webby :运行maven jetty插件。您可以在sonatypes更新站点上找到插件M2e Webby的插件 - http://m2eclipse.sonatype.org/sites/m2e-webby/。安装此插件后,您可以运行配置并从位于{project}/target/m2e-webby的自动版本中运行网络应用。

enter image description here

我建议将其中一个(默认)嵌入式jetty容器配置为servlet-api的提供程序。如果必须测试特定的运行时,可以通过浏览到服务器主目录并选择适当的提供程序来轻松配置外部容器。

我遇到的缺点很小:

  • 必须手动关闭Web应用程序,没有“重启”。
  • 每个Web应用程序必须在单独的端口上运行,它们不共享容器实例。

答案 3 :(得分:-1)

使用上述配置,当前版本的m2eclipse插件从JAR文件“file:.. g / workspace / .metadata / .plugins”错误中“无法读取TLD”META-INF / c.tld“。

您需要从已部署的项目lib /文件夹中删除servlet-api.jar和jsp-api.jar以修复上述错误,并设置自定义构建配置,以便不将2个文件复制到部署目录。 / p>