如何在Eclipse中处理Maven WAR覆盖?

我有一个多模块Maven项目,它使用WAR覆盖(堆栈为3深)。 Maven中的一切都很好用,但是我无法从Eclipse中启动我的WAR,因为它抱怨找不到各种文件。

如何配置Eclipse(和启动器)以便我可以从Eclipse运行我的WAR而无需先进行Maven安装? 我应该补充一点,我的Eclipse WAR项目不是动态Web项目……这是我需要做的一部分吗?

注意:以下问题涉及到主题,但答案表明您必须首先执行Maven安装,并且我知道这不可能是正确的,因为有些人在没有Maven的情况下使用Eclipse。

Maven覆盖和Eclipse

我也发现这让我觉得通过香草M2E是不可能的:

http://jira.codehaus.org/browse/MNGECLIPSE-599

我能够做到这一点,一切都很好。 这是做什么的:

首先,您需要M2E Eclipse插件,这是Eclipse自动识别和更新Maven依赖项所必需的。 它还提供了一个漂亮的图形POM编辑器。 截至2011年底,M2Eclipse项目由Sonatype捐赠给Eclipse基金会,现在简称为M2E 。 但是,Eclipse Indigo的Java EE版本仍未附带,必须通过其更新站点单独安装

在过去,Eclipse和Maven之间的集成有点麻烦。 但是,这个基于Eclipse的新Maven集成现在意识到POM文件中使用了许多Maven插件,并且在IDE环境中只有某些插件的某些目标才有意义。 此外,在IDE内部运行时有意义的目标可能需要特殊配置。 正确处理这个M2E现在支持“连接器”的概念

M2E有一长串特殊连接器,允许它在调用各种mojos(Maven插件目标)时执行“正确的事情”。 要查看Eclipse中可用连接器的列表,请转到“首选项”对话框,然后选择“Maven-> Dicovery->打开目录”。 在项目导入期间在{{pom.xml}}文件中检测到这些连接器时,应该自动安装这些连接器。 但是,这需要正确版本的M2E Maven导入向导(Indigo在SR2之前没有)。

此外,有时这些连接器是错误的,我们需要使用夜间或测试版更新站点来获取最新的修复程序。 如果您有较旧版本或错误版本,则需要在升级后删除并重新导入项目。 出于这些原因,在我看来,在将项目导入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进行的更改将自动发布到您的服务器。 在不重新启动服务器的情况下发布Javascript更改…您只需在浏览器中点击刷新以查看正在运行的新代码。

第二次更新 :M2E中存在一个错误( https://issues.sonatype.org/browse/MECLIPSEWTP-174 ),这可能导致WEB-INF / lib目录意外丢失其所有JAR文件。 发生这种情况时,您的servlet应用程序显然无法启动。 解决方法是通过单击服务器上的右键并选择“清除”来清理服务器。 请注意,仅清理工作目录不会还原这些丢失的JAR。