Eclipse + Maven +动态Web项目 – > Maven覆盖部署程序集

概要

在Eclipse中,当我“Maven->更新项目配置”“Maven Dependencies”从我的项目的“部署程序集”中删除时。

细节

我从一个预配置的Eclipse项目开始:File-> New-> Dynamic Web Project-> JavaServer Face v2.0 Project。 为了删除“魔法”,我将其转换为Maven项目:Configure-> Convert to Maven project。

pom.xml包含以下内容:

 jsf-facelets-tutorial   org.apache.maven.plugins maven-war-plugin  WebContent/WEB-INF/web.xml    org.apache.maven.plugins maven-compiler-plugin  1.6 1.6       javax.el el-api 1.0 provided   junit junit 4.0 test   org.apache.myfaces.core myfaces-api 2.0.5 compile   org.apache.myfaces.core myfaces-impl 2.0.5 runtime   

然后,为了确保在部署之前将Maven依赖项复制到“WEB-INF / lib /”,我将它们添加到项目的“部署程序集”中:项目属性 – >部署程序集。 有关更多详细信息,请参阅此问题: Eclipse + Maven + JavaServer Faces – > ClassNotFoundException:StartupServletContextListener 。

我知道有两个相关的问题。

问题

(1)当我“Project-> Maven-> Update Project Configuration”时,“Maven Dependencies”将从我的“部署程序集”中删除。 有没有办法阻止这种情况发生,可能是通过一些Maven插件?

(2)当我从Eclipse中构建.war时,一切都很好,.war在Tomcat中运行正常。 但是当我从Maven的命令行构建它时, mvn clean compile war:war ,来自“WebContent /”的.html文件没有添加到.war中。 同样,我需要哪些Maven设置/插件来解决这个问题?

仅供参考,这是一个非常基本的应用程序……只是一个登录页面和一个欢迎页面。

如果我应该提供任何其他详细信息(web.xml,faces-config-xml,login.xhtml),请告诉我,我会添加它们。

谢谢

– 编辑 –

Eclipse版本:3.6.2

Eclipse m2e版本:1.0.1

Apache Maven版本:2.2.1

(1)解决方案

更新到Eclipse Java EE 3.7.2(Indigo)。 现在还使用m2e-wtp Maven Integration for Eclipse WTP插件

(2)解决方案

从原型创建新的Maven项目,然后是Eclipse-> Import-> Existing Maven Project。 使用新的Eclipse版本和m2e-wtp,Eclipse中的Java EE透视图可以很好地与标准的Maven目录结构配合使用

pom.xml现在也更简单了:

  jsf-facelets-tutorial   org.apache.maven.plugins maven-war-plugin   org.apache.maven.plugins maven-compiler-plugin  1.6 1.6       javax.el el-api 1.0 provided   junit junit 4.0 test   org.apache.myfaces.core myfaces-api 2.0.5 compile   org.apache.myfaces.core myfaces-impl 2.0.5 runtime   

我建议转到Eclipse 3.7.x(Indigo),它对m2e有更好的支持,并且还允许你使用Maven Integration for WTP (单独安装),这应该会让事情变得更容易。 我想大多数问题应该通过更新到Indigo来解决。

安装链接: http : //marketplace.eclipse.org/node/96737

另见: Eclipse Indigo / 3.7中的Maven / Tomcat项目

编辑将您的Web资源放在WebContent下,然后将其添加为WAR插件中的目录可能是一种解决方案。 干净的方法是将它们放在src/main/resourcessrc/main/webapp ,它们应该自动包含在WAR文件中。 WebContent不是Maven的标准目录之一。