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

我正在运行一个多级的Maven项目。 它将Web应用打包为WAR,这取决于打包为JAR文件的组件

大部分代码更改属于这些JAR文件。

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

我尝试使用sysdeo-tomcat-maven-eclipse插件,但没有像预期的那样工作。

请告知是否有人有这个问题的解决scheme

感谢Gaurav

使用Maven Eclipse集成插件

我遇到问题我发现尝试使用命令行工具mvn进行debugging很有帮助。 作为一个经验法则,如果它没有错误的命令行构build,那么你可以在Eclipse中运行它(但是tomcat也有问题,所以你可能需要清理工作目录并每隔一段时间清除caching)。

除此之外,我真的推荐使用Maven Eclipse Integration插件! 我使用Sonatypes插件回购http://m2eclipse.sonatype.org/sites/m2e的版本。; 在eclipse的repo上有一个更新的集成,但它的工作方式不同,我还没有时间来调查它的用途呢。

如果您的项目是模块化的,那么可以将根项目设置为一个简单的项目(不需要Java,不需要Java EE)。 然后导入子项目作为简单的Java项目(再次没有Java EE)。 您仍然可以激活依赖项pipe理并通过项目运行构build目标。

导入模块

您只需要通过依赖项select您的目标项目所需的子模块。

选择依赖包含作为子项目

对于任何构buildwar文件的项目,都会激活java ee的构面并在进一步的configuration下configuration上下文根(这只能进行一次,为什么在截图中缺less选项,所以这样做是正确的)。

选择你的决定方面

然后为您的相关项目安装部署程序集。 所有兄弟项目(活动在你的工作空间中)都应该被添加到部署程序集中,并且还需要将Maven依赖 构buildpath条目添加到部署程序集中。 一旦设置完成,您可以使用Run on server指令来启动您的Web应用程序。

安装部署程序集

编码maven项目时,我总是保持纯java模式。 Eclipse中的任何智能视图只会掩盖场景背后发生的事情,无论如何您都可以通过激活相关项目来访问特定的编辑器!

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

在pom文件中,您应该有以下几行,以便自动支持webtools

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

使用Maven Eclipse集成插件和Web Runner

设置一个相关的项目(已经在另一个答案中描述),使用最新的Maven Eclipse集成插件。 这应该位于您的eclipse版本的协作下的更新站点。 在我的情况Indigo – http://download.eclipse.org/releases/indigo协作/ Maven集成的Eclipse)。

作为内置服务器的替代scheme,在更新部署程序集(对于Tomcat)中的工作空间依赖关系时经常失败,我build议使用类似于maven jetty插件的maven指令jetty的Sonatype Web Application Launcher Webby 。 你可以在sonatypes更新站点find插件M2e Webby – http://m2eclipse.sonatype.org/sites/m2e-webby/ 。 安装此插件后,您可以运行configuration并从位于{project}/target/m2e-webby的自动构build中运行web-app。

在这里输入图像说明

我build议configuration其中一个默认的embedded式jetty容器作为servlet-api的提供者。 如果必须testing特定的运行时间,则可以通过浏览到服务器主目录并select适当的提供程序来轻松configuration外部容器。

我遇到的缺点是相当小的:

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

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

您需要从已部署的项目lib /文件夹中删除servlet-api.jar和jsp-api.jar以修复上述错误,并设置自定义生成configuration,以使两个文件不会复制到部署目录。