什么是部署程序集中的target / m2e-wtp / web资源?

时间:2016-02-20 15:16:52

标签: java eclipse maven m2e-wtp

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

Deployment Assembly

1 个答案:

答案 0 :(得分:9)

首先,您正在使用此条目意味着您的Eclipse正在顺利运行。您已正确安装M2Eclipse和m2e-wtp

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

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

  

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

     
      由mavenarchiver插件生成的
  • pom.propertiesMANIFEST.MF
  •   
  • <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/。如果出于某种原因,您想要禁用 document.getElementById("test").innerHTML += " hello two"; ,请知道您可以。

所以,不用担心,该文件夹的存在实际上表明您的设置一切正常。如果您错误地删除了该条目,则下次在Eclipse中更新Maven项目时将重新创建该条目。