构建WAR包时出现Maven错误(web.xml丢失..?)

执行mvn install ,我遇到以下错误:

组装WAR时出错:需要webxml属性(如果在更新模式下执行,则为预先存在的WEB-INF / web.xml)

我的Web应用程序结构树是这样的:

 my-app |-- pom.xml |-- src |-- ... |-- WebContent |-- ... |-- META-INF |-- WEB-INF |-- classes |-- ... |-- lib |-- **web.xml** 

我的POM文件看起来像这样:

  4.0.0 masters.traffic traffic_web war traffic_web 0.1.0  src   org.apache.maven.plugins maven-compiler-plugin  1.6 1.6     ...  

如何正确解决这个问题?

问候

强烈建议使用Maven的标准布局 :

  • 将Java源代码放在src/main/java (并删除sourceDirectory元素)
  • 将Web应用程序源放在src/main/webapp
  • 删除WEB-INF下的classeslib目录

当然,你可以自定义布局,但这是IMO更多的麻烦和无用的努力而不是好处。 只需按照惯例。

我的猜测是maven-war-plugin正在寻找src/main/webapp/WEB-INF/web.xml ,但找不到它,并希望你明确指定(非maven标准)位置。 如果你不能将WebContent重命名为webapp并将其移动到src/main/ (推荐)下,你可以尝试在添加这样的内容

  org.apache.maven.plugins maven-war-plugin  ${basedir}/src/WebContent/WEB-INF/web.xml ${basedir}/src/WebContent   

看一下这个评论:

Maven:在classes文件夹中包含META-INF文件夹

我相信Maven需要一个名为“webapp”的文件夹,而不是“WebContent”。

我最近遇到了这个问题,问题是我的资源类没有在类的顶部指定初始路径。 每个方法都指定了一个路径,但没有指定初始路径。

例:

 @Path("/") public class MyResource { @GET @Produces("text/html") public String foo() { return "foo"; } @GET @Path("pt") @Produces("text/html") public String bar() { return "bar"; } 

会工作得很好。 但,

 public class MyResource { @GET @Produces("text/html") public String foo() { return "foo"; } @GET @Path("pt") @Produces("text/html") public String bar() { return "bar"; } 

将不会

如果您正在使用eclispe,请确保右键单击该项目并创建一个Maven“项目”。 您可以使用mvn generate:archetype -B -cpu从命令行编译批处理,但您可能需要手动构建一些内容。 有了它,它将作为Web应用程序或客户端应用程序运行。 将此代码添加到pom.xml。

    org.apache.maven.plugins maven-war-plugin 2.6  false    

我正在关注http://www.vogella.com/tutorials/REST/article.html教程,并在部署最终的CRUD应用程序时获得以下内容。 我正在使用WebContent目录并在我的war插件中设置它。 我正在使用1.19 Jersey和3.1 servlet API版本。

 04-Mar-2015 11:10:11.287 INFO [localhost-startStop-1] com.sun.jersey.api.core.ScanningResourceConfig.init No provider classes found. 04-Mar-2015 11:10:11.429 INFO [localhost-startStop-1] com.sun.jersey.server.impl.application.WebApplicationImpl._initiate Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 05:39 AM' 04-Mar-2015 11:10:12.102 SEVERE [localhost-startStop-1] com.sun.jersey.spi.inject.Errors.processErrorMessages The following errors and warnings have been detected with resource and/or provider classes: SEVERE: Missing dependency for constructor public com.enigma.restful.TodoService(javax.ws.rs.core.UriInfo,javax.ws.rs.core.Request,java.lang.String) at parameter index 0 SEVERE: Missing dependency for constructor public com.enigma.restful.TodoService(javax.ws.rs.core.UriInfo,javax.ws.rs.core.Request,java.lang.String) at parameter index 1 SEVERE: Missing dependency for constructor public com.enigma.restful.TodoService(javax.ws.rs.core.UriInfo,javax.ws.rs.core.Request,java.lang.String) at parameter index 2