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

Y.L*_*.L. 4 java eclipse maven m2e-wtp

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

部署大会

Tun*_*aki 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.propertiesMANIFEST.MF由mavenarchiver插件生成
  • 在配置<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>
Run Code Online (Sandbox Code Playgroud)

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

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