我正在开发一个纯Java基于配置的Spring MVC项目 . 当我进行Maven清理安装时,我收到以下错误 .
无法在项目上执行目标org.apache.maven.plugins:maven-war-plugin:2.2:war(default-war)SpringMVC-ShoppingCart:组装WAR时出错:需要webxml属性(或预先存在的WEB-INF / web.xml如果在更新模式下执行) - > [帮助1]
该错误表示缺少 web.xml
,但由于我使用的是基于纯Java的配置,因此我没有 .
如何在没有 web.xml
的情况下确保项目构建并创建war文件?
2 回答
发生此错误的原因是,版本2.6或更低版本中的maven-war-plugin默认情况下会在WAR项目中出现
src/main/webapp/web.xml
文件,但它找不到它 .使用注释并升级到3.0.0或更高版本
从版本3.0.0的插件,
web.xml
is not mandatory by default anymore的存在:这意味着直接升级插件可以解决问题 . 您可以在POM中添加以下配置:
原因是,自Servlet 3.0起,Web应用程序中不再需要
web.xml
文件,并且can be replaced with annotations具有基于Java的配置(MWAR-262) . 但是,由于您的项目可能不使用注释来替换此文件,在这种情况下web.xml
实际上可能会丢失,因此在插件的3.0.1版中添加了一个健全性检查,以确保注释@WebServlet位于编译类路径中你的WAR项目(MWAR-396) . 如果不是,并且项目中没有web.xml
文件,则默认情况下插件仍然会失败 .忽略丢失的web.xml
如果您只是希望插件显式忽略缺少的
web.xml
文件,则无论注释的用法如何,都可以将failOnMissingWebXml参数设置为false
. 示例配置将是:这是因为您没有在web项目中包含web.xml并尝试使用maven构建war . 要解决此错误,您需要在pom.xml文件中将failOnMissingWebXml设置为false .
例如:
请访问博客了解更多详情:https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html