4

target/m2e-wtp/web-resources我在 Eclipse 中使用 Maven 创建了一个 webapp 项目,我发现“部署程序集”配置卡中有一个名为文件夹的源。这个来源代表什么?我应该保留它还是删除它?

部署组装

4

1 回答 1

9

首先,您拥有此条目这一事实意味着您的 Eclipse 工作顺利。您已正确安装 M2Eclipse 和m2e-wtp

M2Eclipse 是一个将 Maven 集成到 Eclipse 中的项目。它提供了直接在 Eclipse 中构建项目的能力(以及许多其他东西)。m2e-wtp 是 M2E 的一个子集,专注于与 Eclipse Web Tools Project 集成,因此它与 JavaEE 项目结合使用。

当我说“集成”时,它真的意味着在幕后发生了很多神奇的事情,以使一切顺利进行。m2e-wtp 的神奇成分之一就是该target/m2e-wtp-web-resources文件夹,当您在 Eclipse 内部部署 Web 应用程序时使用该文件夹。引用文档

target/m2e-wtp/web-resources/是一个包含自动生成资源的文件夹,需要部署在应用服务器上。这些生成的资源是:

  • pom.properties并由MANIFEST.MFmavenarchiver 插件生成
  • <webResources>在 的配置部分中定义maven-war-plugin或过滤的资源web.xml

target/m2e-wtp/web-resources/是派生的。在 Eclipse 术语中,这意味着如果您尝试手动编辑其中包含的文件,它将显示警告,因为它们很可能在下一个(增量或非增量)项目构建中被自动覆盖。

如果您查看<project>/.settings/org.eclipse.wst.common.component文件,您将看到/target/m2e-wtp/web-resources在常规战争源目录之前定义:

<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="webapp">
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
    <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
    <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
    <property name="context-root" value="webapp"/>
    <property name="java-output-path" value="/webapp/target/classes"/>
  </wb-module>
</project-modules>

此命令背后的基本原理是,如果来自两个不同源文件夹的两个文件发生冲突,WTP 将部署它找到的第一个文件。因此,如果您web.xml在 下过滤您的坐姿src/main/webapp/WEB-INF,您将希望将过滤后的版本部署在服务器上,即target/m2e-wtp/web-resources/WEB-INF/web.xml. 如果出于某种原因,您想禁用target/m2e-wtp/web-resources/,那么知道您可以。

因此,不要害怕,该文件夹的存在实际上表明您的设置一切正常。如果您错误地删除了该条目,它将在您下次在 Eclipse 中更新 Maven 项目时重新创建。

于 2016-02-20T17:11:43.270 回答