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

HDa*_*ave 16 java eclipse servlets war maven-3

我有一个多模块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

HDa*_*ave 18

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

首先,您需要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工具"正常工作"的事情作为项目导入到Eclipse中.

m2e-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.