java – 如何在Eclipse中处理Maven WAR重叠?

我有一个多模块的Maven项目,它使用了WAR叠加层(它们堆叠在3层)。一切都在Maven中运行良好,但是我无法从Eclipse中启动我的WAR,因为它抱怨找不到各种文件。

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

注意:以下问题涉及到这个问题,但答案表明,您必须始终先做一个Maven安装,我知道这是不正确的,因为有人使用没有Maven的Eclipse。

Maven overlays and Eclipse

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

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

最佳答案
我能够完成这一切,一切都很好。以下是做什么:

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

> http://download.eclipse.org/technology/m2e/releases

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

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

此外,有时这些连接器是错误的,我们需要使用夜间或测试版更新站点来获取最新的修复。如果您有较旧的或有bug的版本,则需要在升级后删除并重新导入项目。由于这些原因,在我看来,所有M2E连接器都应该在将项目导入Eclipse之前手动安装。

M2E-WTP连接器是在Eclipse“服务器”的Eclipse启动器中使WAR重叠工作所需要的连接器。此连接器用于将Maven与WTP集成…,从而处理WAR覆盖,servlet容器设置,Eclipse WTP配置,根上下文设置以及其他所有功能,当Maven WAR模块进行Eclipse Web工具“Just Work”作为项目导入Eclipse。

m2e-wtp连接器的更新站点是:http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/

添加M2E-WTP站点并安装连接器。但是请注意,M2E和M2E-WTP连接器都不会将overlay WAR的依赖关系置于最终的WAR中。您必须通过向最终的WAR pom.xml添加必需的依赖关系来执行此操作。我不知道为什么这些工具不会这样做,但是他们没有这样做 – 所以只是解决这个问题。 😉

此时,我还建议您通过{{帮助>检查更新}}进行全面更新。一旦完成,您应该能够简单地添加一个Eclipse服务器,点击您的项目(而不是重叠的项目,但它们是常规的),然后选择“在服务器上运行…”。

对WAR或覆盖WAR做出的更改将自动发布到您的服务器。发布Javascript更改不重新启动服务器…所有您需要做的是在浏览器中点击刷新以查看新的代码运行。

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

转载注明原文:java – 如何在Eclipse中处理Maven WAR重叠? - 代码日志