Eclipse 和 Maven 集成(无 m2e)
本页描述了如何在没有 m2e支持的情况下将 EAR 项目集成到 Eclipse 或基于 Eclipse 的 IDE 中。然而,通常使用 m2e(和 m2e-wtp)应该是集成 Maven 和 Eclipse 的首选方式。但在极少数情况下,这可能是不可能的。
如果您曾经mvn eclipse:eclipse
为一个 EAR 项目生成元数据,它会希望该application.xml
文件位于该src/main/application/META-INF
目录中。
如果您application.xml
使用基于 WTP 的 Application Deployment Descriptor 编辑器进行编辑,它将使用项目的名称(Web、EJB 等)作为模块的名称。这是一个例子:
<?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" version="1.4"> <display-name>FireDragon</display-name> <module> <web> <web-uri>FireDragonWeb.war</web-uri> <context-root>firedragon</context-root> </web> </module> </application>
显然,这并没有应用典型的基于 Maven 的版本命名约定。这允许我们使用测试环境在 Eclipse 内部运行应用程序。当使用 Maven 创建 ear时,如果被告知mvn package
,它将创建版本化文件。application.xml
但是,默认情况下,它不会选择生成的(版本化的)文件,而是使用目录中现有的src/main/application/META-INF
文件。
解决此冲突的解决方案是让 Maven 生成application.xml
并使用生成的,而不是现有的。
这可以通过以下两个指令来实现:
<generateApplicationXml>true</generateApplicationXml> <applicationXml>${project.build.directory}/application.xml</applicationXml>
第一行告诉 Maven 生成一个新application.xml
文件,默认在目标目录中。第二行告诉 Maven 使用它。