我在Eclipse中使用Maven创建了一个webapp项目,我发现在“Deployment Assembly”配置卡中有一个名为target/m2e-wtp/web-resources
的文件夹。这个来源代表什么?我应该保留还是删除它?
答案 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.properties
和MANIFEST.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项目时将重新创建该条目。