构建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
下的classes
和lib
目录
当然,你可以自定义布局,但这是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