当前位置: 首页 > 面试题库 >

如何在Eclipse中处理Maven WAR叠加层?

姜经武
2023-03-14
问题内容

我有一个多模块的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版一起提供,必须通过其更新站点单独安装

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

过去,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/

添加此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。



 类似资料:
  • 问题内容: 我真的是Java Java编程的新手,我做了很多研究,但找不到这个问题的答案。 我有一个简单的用一个菜单,这里面我有一个日志的形式(分别为用户输入自己的用户名和密码),然后我想改变这种状况到另一这取决于用户想做的事情。 最好的方法是什么?我认为堆叠是可以的。但是在Netbeans中添加新内容后,它们不会堆叠。我读过某个地方应该使用Z排序或类似的命令,但在设计器视图中找不到它。 好吧,非

  • 我已经通过使用Java 8的命令提示符编译成功地运行了用于类级保留注释的注释处理器。 但是,当我尝试在eclipse中配置注释处理器并尝试使用选项运行它时,它没有生效。 我已将包含自定义注释处理器类文件的Jar文件包含到

  • 问题内容: 我从http://code.google.com/p/google-gson/下载了Gson库。归档文件包含以下jar文件: google-gson-1.3 / gson-1.3-javadoc.jar google-gson-1.3 / gson-1.3.jar google-gson-1.3 / gson-1.3-sources.jar 如何设置Eclipse使其能够在项目中使用该

  • 问题内容: 我想要一个文本区域,可以处理按 Tab 键的情况。 在默认情况下,如果您按 Tab 键,则焦点将离开文本区域。但是,当用户想要在文本区域中输入 Tab 键时会怎样呢? 我可以捕捉到此事件并将焦点返回到文本区域并将标签添加到 当前 光标位置吗? 问题答案:

  • 问题内容: 如何在Seaborn中叠加两个图形?我的数据中有两列,我希望它们在同一图中。如何保存两个图形的标签。 问题答案: 在单个轴上运行的seaborn函数可以作为一个参数。 例如,文档包括: 因此,如果您这样做: 然后,您可以执行以下操作:

  • 我必须使用 XSLT 2.0 处理器来实现字符串操作函数,如 我在 POM 文件中添加了撒克逊的依赖项并运行了“mvn install”命令。通过执行此操作,“saxon-9.1.0.8.jar”被添加到“引用的库”文件夹下。 在代码中,我使用了 当我尝试调用下面一行< code > transformer factory . new instance(" net . SF . Saxon . t