我有一个多模块Maven项目,它使用WAR覆盖(堆栈为3深)。 Maven中的一切都很好用,但是我无法从Eclipse中启动我的WAR,因为它抱怨没有找到各种文件。
如何配置Eclipse(和启动器)以便我可以从Eclipse运行我的WAR而无需先进行Maven安装?我应该补充一点,我的Eclipse WAR项目不是动态Web项目......这是我需要做的一部分吗?
注意:以下问题涉及到主题,但答案表明您必须首先进行Maven安装,我知道这可能不对,因为有些人在没有Maven的情况下使用Eclipse。
我也发现这让我觉得通过香草M2E不可能:
答案 0 :(得分:18)
我能够做到这一点,一切都很好。这是做什么的:
首先,您需要M2E Eclipse插件,Eclipse需要自动识别和更新Maven依赖项。它还提供了一个漂亮的图形POM编辑器。截至2011年底,M2Eclipse项目由Sonatype捐赠给Eclipse基金会,现在简称为M2E。但是,它仍然没有随Eclipse EE 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连接器是您需要在Eclipse Eclipse服务器的Eclipse启动器中使用WAR覆盖的工具。此连接器用于将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。