我有一个多模块的Maven项目,该项目利用了WAR叠加层(它们的堆栈为3层深)。一切在Maven中都运行良好,但是我无法从Eclipse中启动WAR,因为它抱怨找不到各种文件。
如何配置Eclipse(和启动器),以便可以从Eclipse运行WAR,而不必先执行Maven安装?我应该补充一点,我的Eclipse WAR项目不是动态Web项目…这是我需要做的一部分吗?
注意:以下问题涉及该主题,但是答案表明您必须始终首先安装Maven,我知道这是不对的,因为有些人在不使用Maven的情况下使用Eclipse。
我还发现了这一点,这使我认为无法通过香草M2E来实现:
http://jira.codehaus.org/browse/MNGECLIPSE-599
我能够做到这一点,一切都很好。这是做什么的:
首先,您需要M2E Eclipse插件,该插件是Eclipse自动识别和更新Maven依赖项所必需的。它还提供了一个不错的图形POM编辑器。截至2011年底,Sonatype将M2Eclipse项目捐赠给Eclipse基金会,现在简称为M2E。但是,它仍未随Eclipse Indigo的Java EE版一起提供,必须通过其更新站点单独安装。
过去,Eclipse和Maven之间的集成有些麻烦。但是,这种基于Eclipse的新Maven集成现在意识到以下事实:POM文件中使用了许多Maven插件,并且在IDE环境中只有某些插件的特定目标才有意义。此外,在IDE中运行时确实有意义的那些目标可能需要特殊配置。为了正确处理此M2E,现在支持“连接器”的概念
M2E有许多特殊的连接器,可以在调用各种mojo(Maven插件目标)时执行“正确的事情”。要查看Eclipse中可用连接器的列表,请转到“首选项”对话框,然后选择“ Maven”->“发现”->“打开目录”。在项目导入期间,如果在{{pom.xml}}文件中检测到这些连接器,则应该自动安装这些连接器。但是,这需要M2E Maven导入向导的正确版本(Indigo直到SR2才具备)。
此外,有时这些连接器有问题,我们需要使用每晚或Beta更新站点来获取最新修复程序。如果您使用的是旧版本或错误版本,则需要在升级后删除并重新导入项目。出于这些原因,我认为,在将项目导入Eclipse之前,应手动安装所有M2E连接器。
M2E-WTP连接器是使WAR覆盖层在Eclipse“服务器”的Eclipse启动器中工作所需的连接器。此连接器用于将Maven与WTP集成…从而处理WAR覆盖,servlet容器设置,Eclipse WTP配置,根上下文设置,以及当Maven WAR模块使Eclipse Web工具“ Just Work”都需要做的其他事情作为项目导入到Eclipse。
m2e-wtp连接器的更新站点是: http://download.jboss.org/jbosstools/updates/m2eclipse- wtp/
http://download.jboss.org/jbosstools/updates/m2eclipse- wtp/
添加此M2E-WTP站点并安装连接器。但是请注意,M2E和M2E-WTP连接器都不会将覆盖WAR的依赖项放入最终的WAR中。您必须通过将必需的依赖项添加到最终的WAR pom.xml中来执行此操作。我不知道为什么这些工具不这样做,但是它们却不这样做-因此,请克服它。;-)
此时,我还建议您通过{{Help-> Check for Updates}}进行完整的更新。完成此操作后,您应该能够简单地添加Eclipse服务器,单击您的项目(不是重叠项目,但它们是常规项目),然后选择“在服务器上运行…”。
对WAR或覆盖WAR所做的更改将自动发布到您的服务器。无需更改服务器即可发布Java语言更改…您所要做的只是在浏览器中单击刷新以查看新代码正在运行。
第二次更新 :M2E中存在一个错误(https://issues.sonatype.org/browse/MECLIPSEWTP-174),该错误可能导致WEB-INF /lib目录意外丢失其所有JAR文件。发生这种情况时,您的servlet应用程序显然将无法启动。解决方法是通过在服务器上单击鼠标右键并选择“清理”来清理服务器。请注意,仅清理工作目录不会恢复这些丢失的JAR。